[PASCAL-C++]Zamiennik instrukcji 'case x of' i length(x)

Witam,

Nie ukrywając jestem zwolennikiem Pascala :slight_smile: Przyzwyczaiłem się do niego, jednak czas najwyższy na przesiadkę na c++. Mianowicie chciałem “przetłumaczyć” mój pascalowy kod na c++ i napotkałem następujące problemy:

jak zamienić

case tekst of:

'p','i': write ('xx')

oraz

for i:= 1 to length(tekst)

Proszę was o pomoc, ale jeśli chodzi o case to switch case to nie jest to o co mi chodzi.

Co do lenght to masz str.lenght() czy coś takiego, będzie for(i=1;str.lenght(tekst);i++), a co do case to jego odpowiednik w c++ to właśnie switch case.

  1. Zależy czy wczytujesz znak czy tekst, podam Ci dla znaku.

    char tekst;

    cin >> tekst;

    switch(tekst){

    case ‘p’: ;

    case ‘i’: cout << “xx”;

            break;
    

    }

  2. Należy pamiętać, że tablice w języku C/C++ są numerowane od 0 do n-1. Tak więc aby wypisać znaki z tablicy tekstowej należy:

    char tekst[20];

    for(int i = 0; i < strlen(tekst); i++) cout << tekst[i];

Jeszcze inaczej, jeśli mamy do czynienia z tablicami typu char czyli defacto C-stringami to korzystamy z funkcji strlen(char*), zaś jeśli z obiektami typu string to korzystamy z metody length (dla string str, str.length() ).

16 `lenght’ undeclared (first use this function)

niestety, przy kompilacji występuje wyżej wymieniony błąd.

for(i=1;str.lenght(tekst);i++)

    switch(tekst){

case 'a': cout << "x2"; 

case 'i': cout << "xx";

           break;

Wybacz popełniłem 2 zasadnicze błędy ;]

Po pierwsze nie powinno być nic w nawiasie, a po drugie mam literówkę w owej funkcji. Program powinien wyglądać mniej więcej tak:

#include

super, działa, dzięki wielkie.