Forum » Programiranje » [c#] Kalkulator
[c#] Kalkulator
z3ro ::
Lep pozdrav.
Zanima me, zakaj mi program ne deluje, kadar imam v izrazu deljenje. Če recimo vnesem 10 / 5 + 2 se ne zgodi nič. Drugače pa program še ni dokončan, ampak brez veze da delam naprej če še to ne deluje. Vem da tole z IF stavki ni najbolj optimalna rešitev, ampak ne smemo uporabljati nobenih drugih funkcij in podobnega. Naloga mora prebrati do 3 števila in do 2 operatorja, preveriti pravilnost ter izračunati rezultat (upoštevati mora vrstni red računskih operacij)
EDIT: zdaj mi pa ni nič več jasno. Če vnesem recimo 8/2+2 deluje.. Če pa recimo 10/5+2 pa ne.
Koda:
Hvala
Zanima me, zakaj mi program ne deluje, kadar imam v izrazu deljenje. Če recimo vnesem 10 / 5 + 2 se ne zgodi nič. Drugače pa program še ni dokončan, ampak brez veze da delam naprej če še to ne deluje. Vem da tole z IF stavki ni najbolj optimalna rešitev, ampak ne smemo uporabljati nobenih drugih funkcij in podobnega. Naloga mora prebrati do 3 števila in do 2 operatorja, preveriti pravilnost ter izračunati rezultat (upoštevati mora vrstni red računskih operacij)
EDIT: zdaj mi pa ni nič več jasno. Če vnesem recimo 8/2+2 deluje.. Če pa recimo 10/5+2 pa ne.
Koda:
int stevilo1 = 0; int stevilo2 = 0; int stevilo3 = 0; char operator1; char operator2; int rezultat = 0; Console.WriteLine("Vnesite prvo stevilo:"); stevilo1 = int.Parse(Console.ReadLine()); Console.WriteLine("Vnesite prvi operator:"); operator1 = char.Parse(Console.ReadLine()); Console.WriteLine("Vnesite drugo stevilo:"); stevilo2 = int.Parse(Console.ReadLine()); Console.WriteLine("Vnesite drugi operator:"); operator2 = char.Parse(Console.ReadLine()); Console.WriteLine("Vnesite tretje stevilo: "); stevilo3 = int.Parse(Console.ReadLine()); if ((stevilo1 >= 0 && stevilo1 <= 9 && stevilo2 >= 0 && stevilo2 <= 9 && stevilo3 >= 0 && stevilo3 <= 9) && ((operator1 == '+' || operator1 == '-' || operator1 == '/' || operator1 == '*') && (operator2 == '+' || operator2 == '-' || operator2 == '/' || operator2 == '*'))) { Console.WriteLine("Izraz je pravilno vnesen. vnesli ste 3 stevila in 2 operatorja."); if (operator1 == '*' && operator2=='+') { rezultat = (stevilo1 * stevilo2) + stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '*' && operator2 == '-') { rezultat = (stevilo1 * stevilo2) - stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '/' && operator2 == '+') { rezultat = (stevilo1 / stevilo2) + stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '/' && operator2 == '-') { rezultat = (stevilo1 / stevilo2) - stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '+' && operator2 == '*') { rezultat = stevilo1 + (stevilo2 * stevilo3); Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '+' && operator2 == '/') { rezultat = stevilo1 + (stevilo2 / stevilo3); Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '-' && operator2 == '*') { rezultat = stevilo1 - (stevilo2 * stevilo3); Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '-' && operator2 == '/') { rezultat = stevilo1 - (stevilo2 / stevilo3); Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '+' && operator2 == '+') { rezultat = (stevilo1 + stevilo2) + stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '+' && operator2 == '-') { rezultat = (stevilo1 + stevilo2) - stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '-' && operator2 == '+') { rezultat = (stevilo1 - stevilo2) + stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '-' && operator2 == '-') { rezultat = (stevilo1 - stevilo2) - stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '*' && operator2 == '*') { rezultat = (stevilo1 * stevilo2) * stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '/' && operator2 == '/') { rezultat = (stevilo1 / stevilo2) / stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '*' && operator2 == '/') { rezultat = (stevilo1 * stevilo2) / stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } if (operator1 == '/' && operator2 == '*') { rezultat = stevilo1 / stevilo2 * stevilo3; Console.WriteLine("Rezultat: {0}", rezultat); } } Console.Read();
Hvala
- spremenil: z3ro ()
amacar ::
Prva napaka je že v if stavku, ker ti preverjaš, če je število med 0 in 9, zato ti pri 10 ne izpiše nič, in ni to v povezavi z znakom /.
Potem če imaš deljenje, mislim da je smiselno uporabiti double.
Namesto toliko if stavkov pa bi lahko naredil recimo takole:
-če je drugi operator / ali *, potem daš 2 in tretje število v oklepaj
-sicer izračunaš normalno
Pa če uporabljaš toliko if stavkov, uporabi rajši if else, da ne preverja za vsako pogoja.
Potem če imaš deljenje, mislim da je smiselno uporabiti double.
Namesto toliko if stavkov pa bi lahko naredil recimo takole:
-če je drugi operator / ali *, potem daš 2 in tretje število v oklepaj
-sicer izračunaš normalno
Pa če uporabljaš toliko if stavkov, uporabi rajši if else, da ne preverja za vsako pogoja.
Zgodovina sprememb…
- spremenil: amacar ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Sode ter Lihe(C Sharp)Oddelek: Programiranje | 1664 (1462) | detroit |
» | [c#] Optional parameters must appear....Oddelek: Programiranje | 781 (688) | lambda |
» | [C#] Input string was not in a correct format.Oddelek: Programiranje | 1083 (1020) | Cvenemir |
» | [C#] razlagaOddelek: Programiranje | 1595 (1312) | krastača |
» | Naloga v C#Oddelek: Programiranje | 2610 (2110) | Hardstyle |