Cod sursă (job #105695)

Utilizator avatar alex cioltan alexandru alex IP ascuns
Problemă Bizar (clasele 9-10) Compilator c | 1,24 kb
Rundă Tema 15 clasa 8 Status evaluat
Dată 15 ian. 2015 18:58:30 Scor 60
#include<stdio.h>
int a;
char first;
char tip;
FILE *fin,*fout;
void taie()
{
 first=fgetc(fin);
}
void citeste()
{
 while(first==' ' || first=='\n')
       {
        first=fgetc(fin);
       }
}
int numar()
{
 int nr=0;
 nr=first-'0';
 first=fgetc(fin);
 while(first>='0' && first<='9')
       {
        nr=nr*10+(first-'0');
        first=fgetc(fin);
       }
 return nr;
}
int expresie(int a)
{
 if(first=='(')
    {
     int v[50000],nr_elem=0;
     first=fgetc(fin);
     citeste();
     while(first!=')')
           {
            int x=expresie(v[nr_elem]);
            if(tip==0)
               nr_elem++;
            v[nr_elem]=x;
            citeste();
            if(first==',')
               {
                first=fgetc(fin);
                citeste();
               }
           }
     first=fgetc(fin);
     tip=1;
     if(a%nr_elem==0)
        return v[nr_elem];
     return v[a%nr_elem];
    }
 else
    {
     tip=0;
     return numar();
    }
}
int main()
{
 fin=fopen("bizar.in","r");
 fout=fopen("bizar.out","w");
 first=fgetc(fin);
 citeste();
 a=numar();
 while(first!=EOF)
       {
        a=expresie(a);
        citeste();
       }
 fprintf(fout,"%d",a);
return 0;
}