Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jaką pętle zastosować i jak ją przerwać na tym przykładzie

Ostatnio zmodyfikowano 2017-03-28 17:52
Autor Wiadomość
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ą.


C/C++
#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;
}
P-159515
1aam2am1
» 2017-03-28 16:42:22
C/C++
#include <algorithm>
//...

do
{
    //...
    transform( odp.begin(), odp.end(), odp.begin(),::tolower );
} while( odp != "tak" && odp != "nie" );

P-159525
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
P-159526
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.
P-159534
1aam2am1
» 2017-03-28 17:40:54
odp != "tak" && odp != "TAK" && ...
P-159536
vito217
Temat założony przez niniejszego użytkownika
» 2017-03-28 17:52:09
Heh w końcu działa.  Dzięki wielkie.
P-159541
« 1 »
  Strona 1 z 1