Kolejny zagwozdka początkującego

0

Cześć ;)

Wracam z kolejnym problemem, ponieważ znów program nie działa tak, jak chciałbym, żeby działał.

Chciałem napisać program, który poprosi o jakiekolwiek imię. Przy wpisaniu mateusza, wyświetli, że to złe imię. Przy michale, że dobre. Przy jakimkolwiek innym imieniu, wyświetli "Kombinuj dalej". I chciałem to zapętlić, żeby pytał o imię cały czas, więc zdefiniowałem a, jako 2, ustaliłem warunek i zrobiła się pętla :)

Kod źródłowy:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int a=2;

cout<<"Wpisz jakies imie: "<<endl;
string name;
cin>>name;

if (name=="mateusz" || name=="Mateusz")
{
    cout<<"Wpisales zle imie!";
}

if (name=="michal" || name=="Michal")
{
    cout<<"Wpisales dobre imie!:)";
}

else
{
    cout<<"Kombinuj dalej...";
}

do
{
cout<<"\n"<<"Wpisz inne imie: ";
cin>>name;

if (name=="mateusz" || name=="Mateusz")
{
    cout<<"Wpisales zle imie!";
}

if (name=="michal" || name=="Michal")
{
    cout<<"Wpisales dobre imie!:)";
}

else
{
    cout<<"Kombinuj dalej...";
}
}while (a==2);

cin.get();
cin.get();
return 0;

}
 

Wszystko niby w miarę ok. Wpisuję inne imię, działa jak należy. Wpisuję Michała, działa jak należy. Z kolei jak wpisuję mateusza, to spełnia się pierwszy i ostatni warunek z "Kombinuj dalej" :/

0

Ja bym to widział tak. Continue wraca na początek pętli, a break ją opuszcza. Usunąłem też zmienną a

#include <iostream>
#include <string>

using namespace std;

int main()
{



do

{
string name;
cout<<"Wpisz imie: "<<endl;

cin>>name;

if (name=="mateusz" || name=="Mateusz")
{
    cout<<"Wpisales zle imie!\n";
    continue;
}

if (name=="michal" || name=="Michal")
{
    cout<<"Wpisales dobre imie!:)\n";
    break;
}

else
{
    cout<<"Kombinuj dalej...\n";
    continue;
}
}while (1);

cin.get();
cin.get();
return 0;

}

 

ps zamiast while (1) lepiej dać for(;;), mniej pisania a efekt ten sam

0

O, Twój kod jest prostszy i lepszy! :)
Nurtuję mnie jednak pytanie, dlaczego mój kod nie działa tak, jak należy? I w Twoim, i w moim jest if, if, else. Twój kod działa jak należy. Mój nie... Dlaczego? :/

Chciałbym to zrozumieć.

0

Jakbyś miał normalne wcięcia to łatwiej byś zauważył takie błędy.

więc zdefiniowałem a, jako 2, ustaliłem warunek i zrobiła się pętla
while(true) a nie takie magiczne sztuczki

I w Twoim, i w moim jest if, if, else.
za to nie masz continue i break.

0

Podziękować :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1