Pagini recente » Cod sursa (job #973984) | juniori_1 | Cod sursa (job #110168)
Cod sursa(job #110168)
#include <stdio.h>
char s[26] , ch;
long int nrs[5000], i, l, p, j;
FILE *f;
void citire(){
p=-1;
f=fopen("ordine.in", "r");
while(!feof(f)){
fscanf(f, "%c", &ch);
if(feof(f)!=0){break;}
if(p==-1){p++; s[p]=ch;nrs[p]=1;}
else if (s[p]==ch){nrs[p]++;}
else if(s[p]>ch){
// gasesc pozitia in tabloul s unde trebuie inserat ch
i=p;
while(s[i]>ch && i>=0) {i--;}
if(s[i]==ch &&i>=0){nrs[i]++;}
else{
p++;
for(j=p; j>i+1; j--){
s[j]= s[j-1];
nrs[j]= nrs[j-1];
}
s[i+1]=ch;
nrs[i+1]=1;
}
}
else if (s[p]<ch && p>=0){ p++; s[p]=ch; nrs[p]=1;}
}
fclose(f);
}
void afisare(){
int gata; char cprec;
gata=0;
f=fopen("ordine.out", "w");
fprintf(f, "%c" , s[0]);
cprec=s[0]; nrs[0]--;
while(gata==0){
i=0;
while ((i<=p) && (s[i]==cprec || nrs[i]==0) ){
i++;
}
fprintf(f, "%c", s[i]) ;
nrs[i]--;
cprec=s[i];
if(i>p){gata=1;}
}
fclose(f);
}
int main(){
citire();
afisare();
return 0;
}