VREDNOST IZRAZA - REŠENJE

C++

#include <iostream>
#include<string>
using namespacestd;

int main()
{
string iz,s1,s2;
    getline( cin, iz );

    int poz[4];
//Vraća poziciju računske operacije ili -1 ako je ne pronađe
    poz[0]=iz.find("+");
    poz[1]=iz.find("-");
    poz[2]=iz.find("*");
    poz[3]=iz.find("/");
int i=0, p, q;
while(poz[ i ]==-1){
        i++;
    }
    q=i;

    p=poz[i];
// brojevi u vidu stringa
    s1=iz.substr(0,p);
    s2=iz.substr(p+1);

//Pretvaranje brojeva u int podatak
int a=0, b=0;
for(int i=0;i<s1.length();i++){
char ch= s1.at(i);                          //karakter iz stringa na i-toj poziciji, npr.ch=3
int c=ch-'0';                                     // cifra='3'-'0', razlika kodova ovih cifara je 3
        a=10*a+c;

    }

for(int i=0;i<s2.length();i++){
char ch= s2.at(i);
int c=ch-'0';
        b=10*b+c;
    }

switch(q){                                                                //selekcija switch na osnovu vrednosti celobrojne promenljive q, koja predstavlja
        case 0: cout<<a+b<<endl; break;            //računsku operaciju
        case 1: cout<<a-b<<endl; break;
        case 2: cout<<a*b<<endl; break;
        case 3: cout<<a/b<<endl;
    }

return 0;
}

​Objašnjenje koda


Program u C++ jeziku izračunava vrednost jednostavnog aritmetičkog izraza, kao što je „123*456“. Program funkcioniše tako što korisnik unosi aritmetički izraz kao string, zatim prepoznaje koja operacija (sabiranje, oduzimanje, množenje ili deljenje) se koristi, odvaja operande (brojeve), konvertuje ih iz stringa u cele brojeve i na kraju izvršava odgovarajuću aritmetičku operaciju.
  1. Ulazni string i pronalaženje operatora:
    • Program koristi getline(cin, iz) za unos celog izraza kao stringa.
    • Funkcija find se koristi da pronađe poziciju aritmetičkog operatora (+, -, *, /) u stringu. Ukoliko neki operator nije pronađen, find vraća -1.
  2. Odvajanje operanada:
    • Kada se pozicija operatora pronađe, string se deli na dva dela: pre i posle operatora (s1 i s2).
  3. Konverzija stringa u integer:
    • Program konvertuje stringove koji predstavljaju brojeve (s1 i s2) u celobrojne vrednosti koristeći petlje. Svaki karakter u stringu se konvertuje u odgovarajući broj pomoću razlike ASCII kodova ('0').
  4. Izvršavanje aritmetičke operacije:
    • Program koristi switch za izbor i izvršavanje odgovarajuće aritmetičke operacije na osnovu operatora koji je pronađen u izrazu.
  5. Ispis rezultata:
    • Nakon izvršavanja operacije, rezultat se ispisuje na standardni izlaz.