Skocz do zawartości

Recommended Posts

Napisano

Cześć, pytanie może wydawać się błahe, jednak zastanawiam się i nie mogę wpaść na rozwiązanie. Przypuścmy, że program wczytuje od użytkownika łańchuchy char do momentu napotkania znaku biłałego - po tym konczy wczytywanie i przechodzi do następnych działań. Jak takie coś zrobić, myślałem o pętli do..while, jednak nie wiem co powinno być w warunku.

char znak[40][40];
int i=0;

do
{
    cout<<"Podaj wyraz: ";
    cin>>znak[i];
    i++;
} while(i co w warunku);
Napisano
Pytanie błache, ale problem już nie :) Przykładowo, jeżeli masz ciąg znaków w stumieniu, to musisz je sprawdzać znak po znaku (!) i jeżeli trafisz na "biały znak" to przerywasz sprawdzanie. Albo zapisujesz cały strumień w zmiennej i już na niej dokonujesz sprawdzenie. Proponuję zapoznać się z cin.get(), cin.getline(). A! znaki może rzutować na int-y, wtedy łatwo się je sprawdza np. spacja to 32.
Napisano

Mój fragment kodu wygląda tak, niby program działa jak należy, choć pewnie da się to zrobić mniej łopatologicznie. Próbowałem z funkcją isspace lecz nie wiem dlaczego nie działało. Kompilowałem w CodeBlock.

int i=0,tak=0,ile_lancuchow=0,z;
    cout<<"Podaj wyraz, oraz zatwierdz enterem. \nSortowanie nastapi po podaniu bialego znaku.\n";
    do{
        cin.getline(tab_tekstow[i], 40);
        z=(int)tab_tekstow[i][0];
        if((z==32)||(z==0)||(z==9)||(z==10)||(z==11)||(z==12)||(z==13))
            tak++;
        i++;
        ile_lancuchow++;
    }while(tak!=1);
Napisano

Fajnie, że masz już swój kod teraz można go stopniowo poprawiać.

Przede wszystkim trzeba pozbyć się tego długiego warunku w if, a najlepiej całego if - a. Miałeś dobry pomysł, aby przyjrzeć się funkcji isspace. Zwraca ona wartość różną od zera gdy argument, który został przekazany do funkcji jest "białym znakiem". W praktyce będzie to wyglądało tak:

while(!isspace(tab_tekstow[i-1][0]) && tab_tekstow[i-1][0] != NULL);

Warunek składa się z dwóch części, gdyż dodatkowo trzeba zadbać o przycisk enter

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...