Cod sursa(job #2789114)

Utilizator Mihai.MocanuMihai mmm Mihai.Mocanu Data 26 octombrie 2021 21:42:10
Problema Evaluarea unei expresii Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <stdio.h>
#include <stdlib.h>
#define LUNGIME 100000

char v[LUNGIME];
int Index;
FILE *fin,*fout;

void Citire(){
  int i;
  char a;
  i=0;
  a=fgetc(fin);
  while(a!='\n' && a!=-1){
    v[i]=a;
    i++;
    a=fgetc(fin);
  }
}

int Adunare();

int Termen(){
  int num;

  if(v[Index]=='('){
    Index++;
    num=Adunare();
    Index++;
  }else{
    num=0;
    while(v[Index]>='0' && v[Index]<='9'){
      num=(num*10)+(v[Index]-'0');
      Index++;
    }
  }
  return num;
}

int Inmultire(){
  int rez;
  char x;

  rez=Termen();
  while(v[Index]=='*' || v[Index]=='/'){
    x=v[Index];
    Index++;
    if(x=='*'){
      rez*=Termen();
    }else{
      rez/=Termen();
    }
  }
  return rez;
}

int Adunare(){
  int rez;
  char x;

  rez=Inmultire();
  while(v[Index]=='+' || v[Index]=='-'){
    x=v[Index];
    Index++;
    if(x=='+'){
      rez+=Inmultire();
    }else{
      rez-=Inmultire();
    }
  }
  return rez;
}

int main(){
  fin=fopen("evaluare.in","r");
  fout=fopen("evaluare.out","w");

  Citire();
  Index=0;
  fprintf(fout,"%d",Adunare());

  fclose(fin);
  fclose(fout);
  return 0;
}