C++ban hogy lehet változóhoz rendelni az eredményt?
"változóhoz rendelni az eredményt"
Helyesen mondva váltóba eltárolni.
...
int eredmeny;
...
eredmeny=elsoszam+masodikszam
...
úgy értem hogy a progi tudja a 4 alapműveletet, és van egy függvény, és úgy van megcsinálva, hogy ha a fv.=+,-,*,/ akkor elvégzi az adott művelet.
eredmeny=elsoszam muvelet masodikszam
valahogy így akarom megcsinálni.Hogy ne keljen külön kiírni hogy eredmeny=elsoszam+,-,*,/masodikszam.Nemtudom érthető e?
Akkor vagy csináld valami más nyelvben, vagy gondold át mégegyszer. A C++ nem alkalmas arra, hogy ezt ÍGY leírd, három változót egymás után és akkor majd ő boldog lesz. Operátort nem tudsz változóba tenni.
Azt megteheted, hogy írsz egy-egy add, div, sub, mul függvényt, és attól függően, hogy mi a beadott művelet, másikat végzel el, valahogy így gondoltam:
int add(int, int);
int sub(int, int);
int div(int, int);
int mul(int, int);
typedef int (*muvelet)(int, int);
muvelet muv = 0;
//bekérjük a char-t a c nevű változóba
switch(c)
{
case '+': muv = add; break;
case '-': muv = sub; break;
case '/': muv = mul; break;
case '*': muv = div; break;
}
int eredmeny;
if(muv)
eredmeny = muv(szam1, szam2);
"Akkor vagy csináld valami más nyelvben, vagy gondold át mégegyszer. A C++ nem alkalmas arra, hogy ezt ÍGY leírd, három változót egymás után és akkor majd ő boldog lesz. Operátort nem tudsz változóba tenni."
Mondjuk ez egy kezdőnek biztos bonyolult amit írni fogok:
Az igaz hogy operátorokat nem tudsz közvetlenül változóba tenni, de az előbb említett add,sum,div,mul megírt függvények címét, azaz ilyen függvényre mutató függvény pointer-eket be lehet tenni egy tömbbe, inkább map-be raknám.
Ekkor például: sz1 sz2 változó tárolja a számokat.
A muv változó tárolja a műveletet ( + - / * egyikét ). A muv egy char típusú változó, vagy string ha későbbiekben több karakter hosszú művelet nevet akarsz bevezetni (ugyanis dinamikusan bővíthető)
Például ha csak kiíratni akarod az eredményt akkor ezt írod (ha a muveletT-be tárolod a művelet függvény pointereket) : cout << muveletT[muv](sz1,sz2);
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!