Kezdőoldal » Számítástechnika » Programozás » Hogy lehetne megcsinálni h ha...

Hogy lehetne megcsinálni h ha nem jó nevet írnak be ne menjen tovább a program? Többi lent. (C++)

Figyelt kérdés

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;

}



2015. okt. 6. 18:23
 1/10 anonim ***** válasza:
52%
return 1; oda ahol megakarod szakítani a program futását.
2015. okt. 6. 18:35
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
56%

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

2015. okt. 6. 18:38
Hasznos számodra ez a válasz?
 3/10 SimkoL ***** válasza:

...

while (nev != user)

{

cout << "Írd be a neved!" << endl;

cin >> nev;

}

...

Azért az ékezetesek tudnak meglepetést okozni néha :)

2015. okt. 6. 18:52
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:

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.

2015. okt. 6. 18:52
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:

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.

2015. okt. 6. 19:07
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:
Köszönöm a segítséget!
2015. okt. 7. 12:51
 7/10 SimkoL ***** válasza:
#5: Ugye arra gondolsz, hogy a kérdés színvonalának megfelelő - egyszerű - válasz, mert akkor örülök :) Itt el kell fogadnunk, hogy nagyon kezdők próbálják megérteni a programozás alapjait ilyen-olyan nyelven, szakmai viták nem nagyon férnek bele - arra ott a Prog.hu :) - mert csak belezavarnánk őket. Persze itt is megesik néha egy kis 'rivalizálás', de az általában már a 'megfejtés' után megy. - Néha jó is, az idetévedő hátha lát valami új, érdekes dolgot -
2015. okt. 7. 17:09
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
Igen SimkoL arra gondoltam, bár azt nem értem az első két válaszom miért lett lepontozva, semmi érthetetlent nem írtam.
2015. okt. 7. 17:26
Hasznos számodra ez a válasz?
 9/10 SimkoL ***** válasza:
Én sem pontoztalak le - nem szoktam senkit se le, se fel inkább megírom ha bajom van - de ott volt a gond a válaszoddal, hogy 'ne menjen tovább a program' nem pedig lépjen ki amire te választ adtál. Amit írtam a while.... addig toporog míg nem teljesül a feltétel.
2015. okt. 7. 17:38
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

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á.

2015. okt. 7. 17:49
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!