Hogy lehet ezt a bugot kijavítani a codeblocksba?
A lényeg hogy írtam egy programot ami bekér egy stringet, és addig kéri be amíg ennek hossza 5 vagy kevesebb de nem nulla .
#include <iostream>
#include <string>
using namespace std;
string kulcs;
int main ()
{
do
{
cout << "Adj meg egy kulcsot (maximum 5 karakter hosszu lehet): ";
getline(cin,kulcs);
cout << "\n";
cout << kulcs.length() << "\n";
}
while (kulcs.length()>6);
cout << "A kulcs: " << kulcs;
cin.get();
}
Do while ciklussal csináltam meg és ahogy lehet látni a while feltételben a kulcs hosszúságának feltétele nagyobb mint 6 mégis így fut le hibátlanul. Ez miért lehet?
A do..while ciklus úgy működik, hogy:
1. lefuttatja a ciklusmagot
2. ellenőrzi a feltételt
3. ha igaz -> 1. ; különben kilép
A te do..while ciklusod akkor fog kilépni, ha a kulcs.length()>6 feltétel hamis lesz, vagyis pontosan akkor, ha kulcs.length()<=6. Tehát 6 hosszúságú kulcsot is el fog fogadni.
Hát fogalmazd meg, mi az, ami "rossz kulcs":
- ami hosszabb, mint 5 karakter
- vagy ami üres string
Ezt írd be a while feltételébe.
Az üresség vizsgálata sehogyse jön ki.
Ugye a Do-While while részébe kipróbáltam a empty függvény de üres stringnél ugyanúgy tovább lép a kulcs kiiratásához. próbáltam AND kapcsolattal de azzal se adta ki :/
na nesze itt a kód, remélhetőleg rájössz, mit beszélek
pastebin BfFuUrL6
Istenem, ha már egy feltétel megfogalmazása is gond mi lesz később :)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string kulcs;
cout << "Adj meg egy kulcsot (maximum 5 karakter hosszu lehet): ";
while((kulcs.length()<1) or (kulcs.length()>5)) cin >> kulcs;
cout << "Hossz:" << kulcs.length() << endl;
cout << "A kulcs: " << kulcs << endl;
system("pause");
return 0;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!