Cod sursa(job #130873)
#include<stdio.h>
FILE *f1,*f2;
int main(){
char c;int cnt,x,k1,v[255],v1[255],i,j,n,k=0;
f1=fopen("cifre.in","r");
//incep sa citesc numarul
c=fgetc(f1); //prima cifra
while(c!='\n'){ //pana trec pe linia urmatoare din fisier
v[k++]=c-48;//bag in vector ce-am citit 48 e codul semnului 0
c=fgetc(f1);} //citesc urmatoarea cifra
fscanf(f1,"%i",&n);//citesc numarul de repetitii
fclose(f1);
//terminat citit
for(j=0;j<n;j++){//repet operatiile
i=0;k1=0;x=v[0]; //i parcurge v;k1 nr elem din v1;
do{ cnt=0; //de cate ori apare v[i]
while((v[i]==x)&&(i<k)){cnt++;i++;} //numar
if(i<=k){v1[k1++]=cnt;v1[k1++]=x;x=v[i];} //construiesc v1;
}
while(i<k);
//am terminat odata
k=k1;for(i=0;i<k;i++){v[i]=v1[i];v1[i]=0;}
//am pus v1 in v si v1 l-am facut 0 peste tot
//si trec la urmatoarea OPERATIe J
} //FOR J
f2=fopen("cifre.out","w");
for(i=0;i<k;i++)
fprintf(f2,"%i",v[i]); //scriu ce am obtinut si trec pe linia urmatoare
fprintf(f2,"\n");
fclose(f2);
return 0;}