Skocz do zawartości

Białe znaki, koniec programu, c++


pawl0pl

Recommended Posts

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);
Link do komentarza
Udostępnij na innych stronach

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.
Link do komentarza
Udostępnij na innych stronach

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);
Link do komentarza
Udostępnij na innych stronach

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

Link do komentarza
Udostępnij na innych stronach

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...