Hogy lehetne megcsinálni h ha nem jó nevet írnak be ne menjen tovább a program? Többi lent. (C++)
Kb 1 hete tanulom a C++-t.Mit rontottam el?
#include <iostream>
#include <string>
using namespace std;
int main()
{
setlocale(LC_ALL,"hun");
string nev;
string user="Béla";
int a;
int b;
int eredmeny;
cout<<"Írd be a neved!"<<endl;
cin>>nev;
if(nev==user){
cout<<"Szia Béla"<<endl;
} else {
cout<<"Nem megfelelő név!"<<endl;
}
if(a<=6000000 && b<=6000000 && eredmeny<=6000000){
cout<<"A két szám szorzata: "<<eredmeny<<endl;
else
cout<<"Túl nagy szám!Írj be egy kisebbet!"<<endl;
cin>>a;
cout<<"Írj be még egy számot!"<<endl;
cin>>b;
eredmeny=a*b;
cout<<"A két szám szorzata: "<<endl;
}
return 0;
}
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Mondjuk elrontani mást is elrontottál, például nem adtál 3 változónak értéket.
return 0; // Ez nem szükséges a main végére, ha lehagyod alapból 0 -át returnol
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
...
while (nev != user)
{
cout << "Írd be a neved!" << endl;
cin >> nev;
}
...
Azért az ékezetesek tudnak meglepetést okozni néha :)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Fuss neki mégegyszer az elágazásoknak. Ha valamit feltételesen akarsz végrehajtani, akkor azt a feltételes elágazáson belülre kell tenned.
Nem szívesen játszok szájbarágósat, mert abból nem biztos, hogy tanulsz, ha én mondom el a megoldást ahelyett, hogy magad jönnél rá az útmutatás alapján, de most kivételt teszek: a gyakorlatban a fentiek azt jelentik, hogy a program hátralevő részét az if (nev == user) { ágba kell áthelyezned, így az csak akkor hajtódik végre, ha a név megegyezik a keresettel.
A másik, amit elrontottál - ez egy kicsivel nagyobb hiba -, hogy előbb leellenőrzöd, hogy a, b és eredmeny értékei egy 6 milliós limiten belül vannak-e, de értéket igazából csak ezután kapnak. Leegyszerűsítve, program fentről lefelé hajtódik végre, tehát neked az utasításokat a megfelelő sorrendben kell megadnod. Ha fogok egy üres vödröt és felírom, mennyi víz van benne, majd csak ezután töltök bele vizet, annak ugye nincs sok értelme; előbb kellett volna beletölteni azt a vizet :)
Ha megengedsz egy-két extra megjegyzést, érdemes kerülni a magyar elnevezések használatát (jelen helyzetben csupán azért, mert csúnya, ha keveredik a megkerülhetetlen angollal, hivatásos környezetben pedig elsődlegesen azért szokás, mert a csapatok gyakran nemzetköziek, és nem árt, ha mindenki érti a kódot), illetve tegyél azt operátorok és az operandusok közé szóközöket, hogy jobban olvasható legyen, ne folyjon úgy össze. Ezen felül szintén érdemes kerülni a "varázsszámok" használatát, mint amilyen jelen esetben a 6 millió. Helyette illik konstanst definiálni, így egyrészt a neve elárulja, hogy mit takar, másrészt több helyen felhasználhatod és ha meg kell változtatni, azt csak egy helyen kell megtenned, így ebből fakadó hiba nem keletkezhet. Itt például lehetne a neve LIMIT, ha jól sejtem.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Minden változó legyen const ami nem változik a program futása alatt, illetve az if feltétlen belül a const érték legyen bal oldalt.
A változókat ahogy létrehozod rögtön adj nekik értéket is, illetve ha nem lehetséges (pl. konzolról olvasod be) akkor minél közelebb definiáld az első használatához.
A többi javaslat pedig advanced topics lenne, így ezt kihagyom kedvezve SimkoL akaratának.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Azt még megértem, hogy az elsőt lepontozták, na de a másodikat mégis milyen alapon?
Most, hogy említed a while ciklusod az volt a egyik példa ami helyett nem javasoltam, hogy ürítse ki a buffert, mert ha "1 2 3" a bemenet 3-szor lefut egymás után. Te ezt nyilván tudod őt össze zavarná.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!