Cod sursa(job #220876)

Utilizator oleg_9370Muk BurunduK oleg_9370 Data 13 noiembrie 2008 16:29:15
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <iostream>

bool nuuul(char s[101]){
     bool p=false;
     int j=0;

for(j=0;j<strlen(s);j++)if((s[j]!='0')&&(!p))p=true;
return(p);
}

void scadere(char s[101]){
     int l;

l=strlen(s)-1;
     bool q;
     q=false;
do{    
     
     if((s[l]!='0')&&(l>-1)){
     s[l]--;
     q=true; 
     }
     else 
     {
       if((s[l]=='0')&&(s[l-1]>'0'))s[l-1]--,s[l]='9',q=true; else
       l--;
       }
}while((!q)&&(l!=0));
}

int main()
{
    char s[101];
    int t=0;
    FILE *f1,*f2;
    
//deschide fisiere
 f1=fopen("cifra.in","r");
 f2=fopen("cirfa.out","w");
 
fscanf(f1,"%d",&t);

     int i=0,n=0;
for(i=0;i<t;i++){
     fscanf(f1,"%s",&s);
      n=0;
      while(nuuul(s)){
                int g;
                char z[2];
                z[0]=s[strlen(s)-1];
                z[1]='\0';
                g=atoi(z);
             switch(g){
                       case 1:g=1;break;
                       case 2:g=4;break;
                       case 3:g=7;break;
                       case 4:g=6;break;
                       case 5:g=5;break;
                       case 6:g=6;break;
                       case 7:g=3;break;
                       case 8:g=6;break;
                       case 9:g=9;break;
                       case 0:g=0;break;
                       }
             n+=g;
             n%=10;
             scadere(s);
             }
          fprintf(f2,"%d\n",n%10);           
     }

 fclose(f1);
 fclose(f2);
return(0);
}