Kezdőoldal » Számítástechnika » Programozás » Miért nem jó ez a kód? (c++)

Miért nem jó ez a kód? (c++)

Figyelt kérdés

#include <iostream>

using namespace std;

int main()

{

double elsoszam;

double masodikszam;

double eredmeny;

char muvelet;

cout<<"Irjon be egy szamot!"<<endl;

cin>>elsoszam;

cout<<"Irja be a muveletet!"<<endl;

cin>>muvelet;

cout<<"Irjon be egy szamot!"<<endl;

cin>>masodikszam;

if(muvelet=='+'||'-'||'*'||'/')

{

if(muvelet=='+')

{

eredmeny=elsoszam+masodikszam;

cout<<eredmeny;

}

if(muvelet=='-')

{

eredmeny=elsoszam-masodikszam;

cout<<eredmeny;

}

if(muvelet=='*')

{

muvelet=elsoszam*masodikszam;

cout<<eredmeny;

}

if(muvelet=='/')

{

eredmeny=elsoszam/masodikszam;

cout<<eredmeny;

}

}

else

{

cout<<"Ezt nem tudom ertelmeni!";

}

system("pause>nul");

}


szorzásnál egy nagyon nagy számot ír ki.pl. 5*5=5.12181e+303

Ez miért van?


2012. febr. 2. 21:25
 1/4 anonim ***** válasza:
Nem igazán értek hozzá, én csak pascal-t tanultam, de nem lehet, hogy a kimeneti szám típusa nincs jól megadva?
2012. febr. 2. 21:53
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Először is a

if(muvelet=='+'||'-'||'*'||'/') nem azt vizsgálja amit gondolsz, ez a feltétel sose lehet hamis, a c++ gyenge típusosságához van köze nem megyek bele a részletekbe, amit te gondolsz if ((muvelet=='+')||(muvelet=='-') ... lenne helyes.

Másodszor ne légy ilyen szétszórt, a muvelet=elsoszam*masodikszam; sor kakukktojás, de vajon miért? Ennek következtébe az eredmeny változó nem kap kezdőértéket értéket, ezért az értéke nem definiált, bármi lehet, a korábban ott lévő programobjektum hatására otthagyott memóriaszeméttől függ.

2012. febr. 2. 23:11
Hasznos számodra ez a válasz?
 3/4 _Jessy_ ***** válasza:

másodiknál a pont :)

Szebb megoldás lehet a switch(muvelet){

case '+':

eredmeny = elsoszam+masodikszam;

break;

....

}

cout << eredmeny;

2012. febr. 3. 09:10
Hasznos számodra ez a válasz?
 4/4 anonim válasza:
én is a switch-case r szavazok, egyébként debuggolás segítségével könnyen rájöhetsz a hiba forrására a későbbiekben.
2012. febr. 3. 14:53
Hasznos számodra ez a válasz?

További 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

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!