Kezdőoldal » Számítástechnika » Programozás » Hogy lehet ezt a bugot kijavít...

Hogy lehet ezt a bugot kijavítani a codeblocksba?

Figyelt kérdés

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?


2013. dec. 30. 11:41
 1/9 anonim ***** válasza:

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.

2013. dec. 30. 11:51
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Akkor én értelmeztem valamit félre mert én azt hittem addig kéri be még a feltételnek nem tesz eleget. Hogy lehet akkor megcsinálni hogy az üres stringet se fogadja el?
2013. dec. 30. 11:56
 3/9 anonim ***** válasza:

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.

2013. dec. 30. 13:30
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
amíg IGAZ az, hogy: NEM hosszabb, mint 5 karakter ÉS NEM üres
2013. dec. 30. 14:18
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

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 :/

2014. jan. 1. 19:11
 6/9 anonim ***** válasza:
Na figyelj. Itt több súlyos probléma van. Egyrészt nem fogalmaztad meg, mit kellene csinálnia a programnak. Valószínűsítem, hogy az utolsó szót kellene kiírnia, ami a megadott feltételednek megfelelt. Mivel EGY DARAB stringet használsz, és annak eldöntéséhez, hogy jó-e, beolvasod ebbe a stringbe azt a szót, amiről még nem tudod, hogy jó-e, felülírva a LEGUTOLSÓ JÓ szót, így meg is van a problémád. Már azelőtt eldobod a megoldást, mielőtt kiderülne, hogy az kell-e neked, vagy nem. Szóval ehhez kelleni fog még egy string.
2014. jan. 1. 19:24
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
A kérdés megvan fogalmazva. Van egy kulcs stringem. Ami nem lehet nulla hosszúságú illetve 5 karakternél nem lehet hosszabb. Ehhez elég egy string csak nem tudom vele vizsgáltatni rendesen hogy üres e a string.
2014. jan. 1. 19:30
 8/9 anonim ***** válasza:

na nesze itt a kód, remélhetőleg rájössz, mit beszélek


pastebin BfFuUrL6

2014. jan. 1. 19:33
Hasznos számodra ez a válasz?
 9/9 SimkoL ***** válasza:

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;

}

2014. jan. 1. 21:22
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!