Napisz program, który wyświetla na ekranie indeks tego znaku
łańcucha wprowadzonego z klawiatury, który jest spacją. Jeśli nie
ma takiego elementu, program wyświetla komunikat "brak
spacji".


Odpowiedź :

Odpowiedź

  • Załącznik 1 zawiera program w języku Python wraz z przykładowym wynikiem. W tym przypadku oraz – o ile nie zaznaczyłam inaczej – we wszystkich pozostałych jako przykładowego łańcucha użyłam tekstu     „ a miłości bym nie miał, byłbym niczym ”  zawierającego spację zarówno jako pierwszy element jak i też ostatni.
  • Załącznik 2 zawiera program w języku C#. Wynik uruchomienia jest identyczny jak programu napisanego w języku Python.
  • Załącznik 3 jest plikiem PDF zawierającym trzy różne wersje programu napisanego w języku C++. Pierwsza wersja działa pod Visual Studio (Visual C++). Druga wersja działa pod Code::Blocks oraz Dev-C++. A trzecia wszędzie, ale pod pewnymi warunkami...
  • Załącznik 4 pokazuje wynik uruchomienia pierwszej lub drugiej wersji programu w C++. Wprawdzie wyświetlone pozycje spacji są oczywiście takie same, ale widać wyraźną różnicę w tym co się pojawiło na ekranie.
  • Dla wygody załącznik 5 pokazuje w formie graficznej trzecią (najprostszą) wersję programu w C++. Wynik jej działania zupełnie nie ma polskich znaków, ale pod Visual Studio, Code::Blocks oraz Dev-C++ można wprowadzić teksty z polskimi znakami i uzyskać poprawne odpowiedzi.

Wyjaśnienie

W przypadku języka C++ nie można było bezpośrednio użyć  cin  ponieważ czytałby on do pierwszej spacji.

Trzecia wersja programu w C++ wprawdzie jest najprostsza i działa wszędzie, ale w przypadku uruchomienia przy użyciu systemu Linux, Cygwin lub któregoś ze środowisk on-line (na przykład  replit  lub  onlinegdb )  poprawne wyniki będą uzyskiwane tylko w przypadku ograniczenia się do znaków ASCII. Ograniczenie wynika z braku możliwości łatwej obsługi znaków spoza ASCII w C++.

W PDF-ie widać, że różnice pomiędzy C++ w Visual Studio oraz Code::Blocks / Dev-C++ są minimalne:

  • obecne wersje Code::Blocks / Dev-C++ jeszcze nie pozwalają na używanie języka polskiego w nazwach zmiennych (nie jest to ograniczenie języka C++, a ograniczenie starych wersji kompilatora g++ użytego w tych projektach; przypuszczalnie następne wersje tych środowisk już nie będą miały takiego ograniczenia);
  • albo %S, albo %s; tak już jest...

Już po tak prostym zadaniu można się zorientować, że przetwarzania tekstów nie powinno się programować w C++ !

Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB