pawl0pl Napisano Styczeń 3, 2015 Zgłoś Udostępnij Napisano Styczeń 3, 2015 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); Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Mavo Napisano Styczeń 3, 2015 Zgłoś Udostępnij Napisano Styczeń 3, 2015 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. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
pawl0pl Napisano Styczeń 3, 2015 Autor Zgłoś Udostępnij Napisano Styczeń 3, 2015 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); Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Mavo Napisano Styczeń 4, 2015 Zgłoś Udostępnij Napisano Styczeń 4, 2015 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.