Jaką pętle zastosować i jak ją przerwać na tym przykładzie
Ostatnio zmodyfikowano 2017-03-28 17:52
vito217 Temat założony przez niniejszego użytkownika |
Jaką pętle zastosować i jak ją przerwać na tym przykładzie » 2017-03-28 15:23:07 Chce żeby program po zapytaniu się o imie wiek i ulubiony samochód, podsumował wpisane dane. I zapytał się czy podoba się jeszcze jakiś samochod. Do tej pory wszystko działa. Ale chce żeby wymusił na użytkowniku odp tak lub nie, w przypadku wpisania innych znaków np "1234" lub "sadagsfg" lub cokolwiek innego ma prosić o wpisanie tak lub nie i powtarzać ten tekst dopóty dopóki użytkownik wpisze tak lub nie. I tu pojawia się problem bo jak bym nie kombinował to program nie chce wyłączyć pętli lub pomija ją albo powtarza tylko 2 razy i przechodzi dalej. Jak to powinno wyglądać? Wklejam tylko ostatnią wersje którą napisałem. Po wpisaniu tak ma zapytać się o nazwe kolejnego samochodu po wpisaniu nie ma przejść do kolejnego podsumowania później ma jeszcze robić jakieś obliczenia z wikekiem ale to będę rzeźbił jak wyjaśni się z pętlą. #include <iostream> #include <windows.h> #include <cstdlib> using namespace std;
string imie, samochod, samochod2, odp; int wiek;
int main() { cout << "Witaj " << endl; cout << "Wpisz swoje imie" << endl; cin >> imie; cout << "Ile masz lat?" << endl; cin >> wiek; cout << "Dziekuje" << endl; cout << "Jaki samochod ci sie podoba?" << endl; cin >> samochod; cout << "A wiec podsumujmy" << endl; cout << "Twoje imie to:" << imie << endl; cout << "Masz " << wiek << " lat" << endl; cout << "i podoba ci sie " << samochod << endl; cout << "Czy podoba ci sie jeszcze jakis samochod?" << endl; do { cout << "Wpisz 'tak' lub 'nie'" << endl; cin >> odp; } while(( odp == "tak" ) ||( odp == "TAK" ) ||( odp == "Tak" ) ||( odp == "nie" ) ||( odp == "NIE" ) ||( odp == "Nie" ) ); if(( odp == "tak" ) ||( odp == "TAK" ) ||( odp == "Tak" ) ) { cout << "Jaki to samochod?" << endl; cin >> samochod2; } cout << "Podsumowanie:" << endl; Sleep( 1000 ); cout << "Twoje imie to:" << imie << endl; Sleep( 1000 ); cout << "Masz " << wiek << " lat" << endl; Sleep( 1000 ); cout << "i podoba ci sie " << samochod << " " << samochod2 << endl; return 0; } |
|
1aam2am1 |
» 2017-03-28 16:42:22 #include <algorithm>
do { transform( odp.begin(), odp.end(), odp.begin(),::tolower ); } while( odp != "tak" && odp != "nie" );
|
|
Szustarol |
» 2017-03-28 16:43:41 "dopóki odpowiedź to tak, lub TAK lub nie lub NIE lub Nie lub Tak to powtarzaj pętlę"
@up pewnie też pójdzie natomiast odpuściłbym sobie algorithm, op wygląda na dopiero uczącego się programowania więc może niech wie co zrobił źle |
|
vito217 Temat założony przez niniejszego użytkownika |
» 2017-03-28 17:28:49 Dokładnie dopiero co 3 dni temu rozpocząłem szumnie mówiąc naukę i robię "projekt" z kilkoma znanymi mi funkcjami żeby je przećwiczyć zanim obejrzę przeczytam kolejny krok. natomiast "dopóki odpowiedź to tak, lub TAK lub nie lub NIE lub Nie lub Tak to powtarzaj pętlę" zmieniłem na
do { cout....................... cin >> odp; } while (odp!="tak")........
i rozumiem to w takie sposób
rób cout i cin dopóki odp będzie różna od tak.... i w tym momencie pętla działa tyle że nie chce się skończyć. mimo wpisania "tak" "nie" itd.
już tyle różnych wersji zrobiłem dzisiaj zmieniając założenie że zaczynam się gubić. A w kółko wychodzi mi to samo. |
|
1aam2am1 |
» 2017-03-28 17:40:54 odp != "tak" && odp != "TAK" && ... |
|
vito217 Temat założony przez niniejszego użytkownika |
» 2017-03-28 17:52:09 Heh w końcu działa. Dzięki wielkie. |
|
« 1 » |