Да се напише програма, която позволява да се въведат две числа и после един символ за операция и чрез функции пресмята при символ:
- ‘+’ – сумата на числата
- ‘-‘ – разликата на числата
- ‘*’ – произведението на числата
- ‘/’ – частното на числата; да отпечатва подходящо съобщение, когато делението е невъзможно!
- ‘#’ – край на пресмятане на числата
Въвеждането на числа и пресмятането да продължава дотогава, докато за операция не се въведе ‘#’.
По желание: Добавете и други функции към вашия калкулатор.


Unfinished!
#include <cstdlib> #include <iostream> using namespace std; double r; bool calculato(double a,double b,char c){ if (c=='+'){ r=a+b; return true; } else if (c=='*'){ r=a*b; return true; } else if (c=='/'){ r=a/b; if (b==0) return false; else return true; } else if (c=='-'){ r=a-b; return true; } } int main() { double a,b; char c='b'; while (c!='#'){ cin>>a>>b>>c; if(calculato(a,b,c)) if (c=='#'){ cout<<"Krai na presmqtane"; return 0; } cout<<r<<endl; if(calculato(a,b,c)==false) cout<<"Operaciqta ne moje da se izpulni"; } return 0; }#include <cstdlib> #include <cmath> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; double calculator(double a,double b,char op){ double rezultat= 0.0; if (op=='+'){ rezultat=a+b; } else if(op=='-'){ rezultat=a-b; } else if(op=='*'){ rezultat=a*b; } else if(op=='/'){ rezultat=a/b; } //na stepen else if(op=='^'){ rezultat= pow(a,b); } else{ cout<<"ne e aritmetichna operaciq"<<endl; } } int main(int argc, char** argv) { char op = '+'; double a,b=0.0; cout<<"vuvedi dve chisla i op(+,-,*,/,^,#(za prekratqvane))"<<endl; cout<<"vavedi 1voto chislo"<<endl; cin>>a; cout<<"vavedi 2roto chislo"<<endl; cin>>b; cout<<"op(+,-,*,/,^,) "<<endl; cin>>op; while(op !='#'){ cout<< calculator(a,b,op)<<endl; cout<<"vuvedi dve chisla i op(+,-,*,/,^,v,#(za prekratqvane))"<<endl; cout<<"vavedi 1voto chislo"<<endl; cin>>a; cout<<"vavedi 2roto chislo"<<endl; cin>>b; cout<<"op(+,-,*,/,^,#) "<<endl; cin>>op; } return 0; }Браво, Алекс! Добавил си и степенуване, гледам! Помисли и какво ще стане при операция деление и b=0 и дали не може да се избегнат повторенията в main функцията.
Upgraded
#include <cstdlib> #include <iostream> #include <cmath> using namespace std; double r,stepen; bool calculato(double a,double b,char c){ if (c=='+'){ r=a+b; return true; } else if (c=='*'){ r=a*b; return true; } else if (c=='/'){ r=a/b; if (b==0) return false; else return true; } //Dvete chisla na vtora stepen else if (c=='^'){ r=a*a; stepen=r; r=b*b; } //Korena na chislata else if (c=='v'){ r=sqrt(a); stepen=r; r=sqrt(b); } else if (c=='-'){ r=a-b; return true; } } int main() { double a,b; char c='b'; while (c!='#'){ cin>>a>>b>>c; if(calculato(a,b,c)) if (c=='#'){ cout<<"Krai na presmqtane"; return 0; } cout<<r<<" "<<stepen<<endl; if(calculato(a,b,c)==false) cout<<"Operaciqta ne moje da se izpulni"; } return 0; }По-добре изглежда, но има какво да се оправи още. Подсети ме да я обсъдим.
Fixed*