» »

[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:
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.

Zgodovina sprememb…

  • spremenil: amacar ()

z3ro ::

Uf kak fail sm naredo:D Hvala, bom popravil;)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Sode ter Lihe(C Sharp)

Oddelek: Programiranje
161664 (1462) detroit
»

[c#] Optional parameters must appear....

Oddelek: Programiranje
6781 (688) lambda
»

[C#] Input string was not in a correct format.

Oddelek: Programiranje
61083 (1020) Cvenemir
»

[C#] razlaga

Oddelek: Programiranje
161595 (1312) krastača
»

Naloga v C#

Oddelek: Programiranje
72610 (2110) Hardstyle

Več podobnih tem