Kde mám chybu? (jsem začátečník v C++) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kde mám chybu? (jsem začátečník v C++) – C / C++ – Fórum – Programujte.comKde mám chybu? (jsem začátečník v C++) – C / C++ – Fórum – Programujte.com

 

Honza
~ Anonymní uživatel
450 příspěvků
23. 9. 2015   #1
-
0
-

ahoj, lámám si hlavu, kde mám v kódu chybu... Pokouším se sestrojit program, do kterého zadáte heslo a on se vypne (máte 3 pokusy). Ale když ho spustím a zadam špatné heslo, program se už nevrátí k příkazu while.Díky za odpovědi!

zde je kod:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int password;
    int pokusy = 0;
    cout << "Enter password:"<< endl ;
    
    while (pokusy < 3)
    {
        cin >> password;
        if (password == 1234)
        {
            cout << "Access granted" << endl;
            system("pause");
            return 0;
        }
        else
        {
            cout << "Access denied" << endl;
            pokusy++;            
        }
        
    }
    return 0;

}

Nahlásit jako SPAM
IP: 217.195.174.–
lukas.balaz0
Super člen
24. 9. 2015   #2
-
0
-

#1 Honza
U mňa všetko ide, neviem prečo u teba nie ... možno ťa mätie to, že vypíše len "Access denied" a hneď potom očakáva, že píšeš heslo. Buď presuň cout << "Enter password:"<< endl; do toho cyklu alebo vždy, ak je počet pokusov menší ako 3, vypíš pri chybe aj "Try again:". Okrem toho väčší zmysel by malo najprv nastaviť premennú pokusy na 3 a potom odčítavať, tak sa ti bude ľahšie hľadať, čo máš zmeniť, ak chceš zmeniť počet pokusov (ak sa časom program rozrastie). Takto by som to urobil ja:
 

#include <iostream>
#include <string>
using namespace std;
int main() {
    const int password = 1234;
    const int maxAttempts = 3;
    
    int attempts = maxAttempts;
    cout << "Enter password:"<< endl;
    while (attempts) {
        int pwd;
        cin >> pwd;
        if (pwd == password) {
            cout << "Access granted" << endl;
            return 0;
        }
        else {
            cout << "Access denied" << endl;
            attempts--;
            if(attempts != 0) {
                cout << "Try again:" << endl;
            }
        }
    }
    return 0;
}
Nahlásit jako SPAM
IP: 80.242.41.–
BDS+3
Věrný člen
24. 9. 2015   #3
-
0
-

#1 Honza
Program pracuje správně ;) Nemáš tam třeba aktivovaný breakpoint?

Nahlásit jako SPAM
IP: 185.69.69.–
W10 :)
BDS+3
Věrný člen
24. 9. 2015   #4
-
0
-

#1 Honza
nebo program spadne, protože nezadáš číslo, třeba písmeno.

Nahlásit jako SPAM
IP: 185.69.69.–
W10 :)
KIIV
~ Moderátor
+43
God of flame
24. 9. 2015   #5
-
0
-

Mozna mysli tim "spatne heslo" treba pismena. Ono se to pak vrati, ale cin je ve stavu failed a uz nic nenacita a stale dokola jeste dvakrat.

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kenvelo+2
Super člen
24. 9. 2015   #6
-
0
-

#1 Honza
zkus tohle místo int dej string

#include <iostream>
#include <string>

using namespace std;

int main()
{
	string password;
	int pokusy = 0;
	cout << "Enter password:" << endl;

	while (pokusy < 3)
	{
		cin >> password;
		if (password == "1234")
		{
			cout << "Access granted" << endl;
			system("pause");
			return 0;
		}
		else
		{
			cout << "Access denied" << endl;
			pokusy++;
		}

	}
	return 0;

}
Nahlásit jako SPAM
IP: 89.177.196.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 17 hostů

Podobná vlákna

Kde mám chybu? — založil Anonymní uživatel

Kde mám chybu? — založil takinoo

Kde mám chybu? — založil tomáš polz

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý