Zastosowanie pętli w programie proszącym o podanie hasła

0

Witam ćwiczę do sprawdzianu z algorytmiki, który będzie dotyczył pętli. Ustawiłem sobie za cel stworzenie programu, który po wpisaniu słowa "hasło" wypisze napis" poprawne hasło". Natomiast jeśli użytkownik napisze coś innego program poprosi użytkownika 3 razy o ponowne podanie hasła. Po wpisaniu drugi raz złego hasła program wyświetla "ostatnia proba" natomiast przy 3 błędnym zapisie wypisuje "nie udalo sie zalogować". zrobiłem ten sam program za pomocą pętli do while i próbując przekształcić ją na pętle for zamiast łącznie 3 razy pytać o hasło pyta 4. Czy mógłby ktoś pomóc kod:

pętla for

#include <iostream>
using namespace std;

int main()
{
string haslo;

for(int licznik=0;licznik<3; licznik++)
{
    cout<<"podaj haslo  ";
    cin >> haslo;
    if (haslo=="haslo")
    {
        break;
    }
    else
    {

       cout<<"zle haslo"<<endl;
       if(licznik==2)
       {
        cout<<"ostatnia proba"<<endl;
       }
       else if(licznik==3)
       {
           cout<<"nie udalo sie zalogowac"<<endl;
           return 0;
       }

    }
}
cout<<"poprawne haslo"<<endl;

return 0;

Pętla do while

#include <iostream>
using namespace std;

int main()
{
string haslo;
int licznik = 0;


do
{

    cout <<"podaj haslo"<<endl;
    cin >> haslo;


    if(haslo=="haslo")
    {
        break;
    }
    else
    {
        licznik++;
        cout<<"zle haslo sproboj ponownie"<<endl;
        if (licznik==2)
        {
            cout<<"ostatnia proba"<<endl;
        }
    }
}
while(licznik<3);
if (licznik==3)
        {
            cout <<"zbyt wiele razy wprowadzono zle haslo"<<endl;
            return 0;
        }

cout<<"witamy"<<endl;
return 0;
}
0

@Michał Makrenek: Program prosił o hasło 3 razy tylko ostatni komunikat był błedny. Poniżej kod z poprawką.

#include <iostream>
using namespace std;

int main()
{
string haslo;
int licznik = 0;

do
{

    cout <<"podaj haslo"<<endl;
    cin >> haslo;

    if(haslo=="haslo")
    {
        break;
    }
    else
    {
        licznik++;
        if(licznik<3)
          cout<<"zle haslo sproboj ponownie"<<endl;
        else
          cout<<"zle haslo"<<endl;
          
        if (licznik==2)
        {
            cout<<"ostatnia proba"<<endl;
        }
    }
}
while(licznik<3);
if (licznik==3)
        {
            cout <<"zbyt wiele razy wprowadzono zle haslo"<<endl;
            return 0;
        }

cout<<"witamy"<<endl;
return 0;
}
5
for(int licznik=1;licznik<=3;++licznik)

Bez sensu są próby napisania za pomocą konkretnego rodzaju pętli, należy wybrać krótszy i czytelniejszy kod.

#include <iostream>
using namespace std;

int main()
{
	string PASS("haslo");
	int count=1;
	for(string pass;(cout<<"podaj haslo: ")&&(cin>>pass)&&(pass!=PASS);++count)
	{
		cout<<"Zle haslo, ";
        if(count<3) cout<<" sproboj ponownie"<<endl;
        if(count==2) cout<<"ostatnia proba"<<endl;
		else if(count>=3)
	    {
	    	cout<<"zbyt wiele razy wprowadzono zle haslo"<<endl;
	        return 0;
	    }
	}
	cout<<"witamy"<<endl;
	return 0;
}
0

@_13th_Dragon: dziękuję za pomoc, będę wiedział na przyszłość, że można tak skrócić kody. Natomiast jeśli bym taki kod zastosował na sprawdzianie prawdopodobnie dostał bym 1 bo korzystam z treści, których nie było na lekcji

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