C/c++ Калькулятор Visual Studio

  • Автор темы Vanua2
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

Vanua2

Гость
#1
#include <iostream>
#include <stdlib.h>
#include <string>
#include <math.h>
#define EMPTY 'e'
#define ERROR 'r'
#define END 'x'
double result=0,diget,t;
using namespace std;
void main(){
setlocale(LC_ALL,"Ukrainian");
char string[255],history[255];
char oper=EMPTY;
history[0]='\0';
cout<<"Введіть числа і знак(+,-,*,/,%,^).\n";
while (1) {cin>>(string);
strcat(history,string);
diget=atof(string);
if (diget==0){
if(strlen(string)==1)
oper=string[0];
else if(strcmp(string,"cos")==0)
result=cos(result);
else if(strcmp(string,"sin")==0)
result=sin(result);
else if(strcmp(string,"tg")==0)
result=tan(result);
else if(strcmp(string,"ctg")==0)
result=1/tan(result);
else if(strcmp(string,"e")==0)
result=exp(result);
else{cout<<"Wrong function\n";
history[strlen(history)-strlen(string)]='\0';
}
if (oper=='='){
cout<<history<<result<<endl;
history[0]='\0';
oper=EMPTY;}
if(oper==END) exit(1);}
else if(oper==EMPTY) result=diget;
else { switch(oper){
case '+': result=result+diget; oper=EMPTY;break;
case '-': result=result-diget; oper=EMPTY;break;
case '*': result=result*diget; oper=EMPTY;break;
case '/': if(diget==0)cout<<"На нуль ділити не можна";
else{result=result+diget; oper=EMPTY;break;
case '%': result=(int)result % (int)diget; oper=EMPTY;break;
case '^': result=pow(result,diget); oper=EMPTY;break;
case 'x': exit(1);
case '=': break;
default: t=ERROR; history[strlen(history)-strlen(string)-1]='\0';oper=EMPTY;}
if (t==ERROR)
cout<<"Неправильний знак\n";}
}}}
 

Вложения

Статус
Закрыто для дальнейших ответов.