Cod sursa(job #110733)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 27 noiembrie 2007 17:55:45
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
FILE *f,*g;
long int s,fr[30],j,ok;
char c[30],x;
void afisare( int i,long int &s);
void atribuire();
int main()
{       f=fopen("ordine.in","r");g=fopen("ordine.out","w");
	atribuire();
	while(!(feof(f))){ fscanf(f,"%c",&x);
					  for(j=1;j<=26;j++) if(x==c[j]){ fr[j]++; s++; break;}
					}
	afisare(1,s);
	fcloseall();
	return 0;
}
void afisare( int i,long int &s)
{	if(s==0) return;
	if(fr[i]){ fprintf(g,"%c",c[i]); fr[i]--; s--;}
	else afisare(i++,s);
	ok=1;
	for(j=1;j<i;j++) if(fr[j]) {ok=0; afisare(j,s); break;}
	if(ok) afisare(i++,s);
}
void atribuire()
{	c[1]='a'; c[2]='b'; c[3]='c'; c[4]='d'; c[5]='e'; c[6]='f';
	c[7]='g'; c[8]='h'; c[9]='i'; c[10]='j'; c[11]='k'; c[12]='l';
	c[13]='m'; c[14]='n'; c[15]='o'; c[16]='p'; c[17]='q'; c[18]='r';
	c[19]='s'; c[20]='t'; c[21]='u'; c[22]='v'; c[23]='w'; c[24]='x'; c[25]='y'; c[26]='z';
}