Pętla i stringi.
Ostatnio zmodyfikowano 2015-11-24 20:40
Morksil Temat założony przez niniejszego użytkownika |
Pętla i stringi. » 2015-11-24 16:26:02 Witam! Mam problem z nastepujacym zadaniem: Wczytywać napisy aż do napotkania dwóch kolejnych napisów kończących się wielką literą i dłuższych od pierwszego wczytanego napisu. Potem wczytać jeszcze n napisów (n należy przedtem wczytać). Wydrukować średnią długość wszystkich wczytanych napisów oraz ostatni wczytany napis.
Oto kod:
#include<iostream> #include<string> using namespace std; int main() { unsigned int dlugosc; string aktualny,poprzedni; int licznik=3; double suma=0; cout << "Wpisz pierwszy napis: "; cin >> aktualny; suma+=aktualny.size(); dlugosc=aktualny.size(); cout << "Wpisz kolejny napis: "; cin >> poprzedni; suma+=poprzedni.size(); cout << "Wpisz kolejny napis: "; cin >> aktualny; suma+=aktualny.size();
while(aktualny.size() <=dlugosc && poprzedni.size() <=dlugosc && (aktualny[aktualny.size()-1] < 'A' || aktualny[aktualny.size()-1] > 'Z' )&& (poprzedni[poprzedni.size()-1] < 'A' || poprzedni[poprzedni.size()-1] >'Z')) { poprzedni=aktualny; cout << "Podaj kolejny napis: "; cin >> aktualny; suma+=aktualny.size(); licznik++; cout << poprzedni<< endl; cout << aktualny<<endl;
} return 0; }
Chodzi o to, że wyrzuca mnie z pętli zawsze gdy podam jeden napis z zakończeniem dużą literą i tak samo jest z długością wyrazów, wystarczy przekroczyc dlugość jednego i wyrzuca z pętli a chciałbym, żeby było tak jak jest w poleceniu. Próbowałem sam coś wykombinować, niestety bezowocnie. Prosze o jakąś wskazówkę. |
|
Morksil Temat założony przez niniejszego użytkownika |
Odpowiedź. » 2015-11-24 20:28:53 Jeśli kogoś bedzie w przyszłości interesowało to zadanie poniżej zamieszczam kod z rozwiązaniem.
Oto kod:
#include<iostream> #include<string> using namespace std; int main() { unsigned int dlugosc; string aktualny,poprzedni; int licznik=3; double suma=0; cout << "Wpisz pierwszy napis: "; cin >> aktualny; suma+=aktualny.size(); dlugosc=aktualny.size(); cout << "Wpisz kolejny napis: "; cin >> poprzedni; suma+=poprzedni.size(); cout << "Wpisz kolejny napis: "; cin >> aktualny; suma+=aktualny.size(); while((aktualny.size() <=dlugosc || poprzedni.size() <=dlugosc) && (aktualny[aktualny.size()-1] < 'A' || aktualny[aktualny.size()-1] > 'Z' )|| (poprzedni[poprzedni.size()-1] < 'A' || poprzedni[poprzedni.size()-1] >'Z')) { poprzedni=aktualny; cout << "Podaj kolejny napis: "; cin >> aktualny; suma+=aktualny.size(); licznik++; cout << poprzedni<< endl; cout << aktualny<<endl;
} return 0; }
|
|
carlosmay |
» 2015-11-24 20:40:07 #include<iostream> #include<string> using namespace std; int main() { unsigned int dlugosc; string aktualny, poprzedni; int licznik = 3; double suma = 0; cout << "Wpisz pierwszy napis: "; cin >> aktualny; suma += aktualny.size(); dlugosc = aktualny.size(); cout << "Wpisz kolejny napis: "; cin >> poprzedni; suma += poprzedni.size(); cout << "Wpisz kolejny napis: "; cin >> aktualny; suma += aktualny.size(); while(( aktualny.size() <= dlugosc || poprzedni.size() <= dlugosc ) &&( aktualny[ aktualny.size() - 1 ] < 'A' || aktualny[ aktualny.size() - 1 ] > 'Z' ) ||( poprzedni[ poprzedni.size() - 1 ] < 'A' || poprzedni[ poprzedni.size() - 1 ] > 'Z' ) ) { poprzedni = aktualny; cout << "Podaj kolejny napis: "; cin >> aktualny; suma += aktualny.size(); licznik++; cout << poprzedni << endl; cout << aktualny << endl; } return 0; }
|
|
« 1 » |