Cod sursa(job #2791710)

Utilizator teodortatomirTeodor Tatomir teodortatomir Data 30 octombrie 2021 23:25:40
Problema Evaluarea unei expresii Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 100001

char v[MAX];
int i;
int adun();
int numar(){
  int nr;

  if(v[i]=='('){
    i++;
    nr=adun();
    i++;
  }
  else{
    nr=0;
    while(v[i]>='0' && v[i]<='9'){
      nr=nr*10+(v[i]-'0');
      i++;
    }
  }
  return nr;
}
int prod(){
  int af;

  af=numar();
  while(v[i]=='*' || v[i]=='/'){
    if(v[i++]=='*')
      af*=numar();
    else
      af/=numar();
  }
  return af;
}
int adun(){
  int af;

  af=prod();
  while(v[i]=='+' || v[i]=='-'){
    if(v[i++]=='+')
      af+=prod();
    else
      af-=prod();

  }
  return af;
}
int main(){
  FILE *fin,*fout;
  char ch;

  fin=fopen("evaluare.in", "r");
  fout=fopen("evaluare.out", "w");
  ch=fgetc(fin);
  i=0;
  while(ch!='\n'){
    v[i]=ch;
    i++;
    ch=fgetc(fin);
  }
  i=0;
  fclose(fin);

  fprintf(fout, "%d\n", adun());
  fclose(fout);
  return 0;
}