VREDNOST IZRAZA - REŠENJE
C++
#include <iostream>
#include<string>
using namespace std;
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;
}
#include<string>
using namespace std;
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.
- 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.
- Odvajanje operanada:
- Kada se pozicija operatora pronađe, string se deli na dva dela: pre i posle operatora (s1 i s2).
- 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').
- 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.
- Ispis rezultata:
- Nakon izvršavanja operacije, rezultat se ispisuje na standardni izlaz.