Cod sursa(job #743610)

Utilizator radu_bucurRadu Bucur radu_bucur Data 5 mai 2012 11:54:00
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.61 kb
#include<cstdio>
#include<string.h>
char s[1601],a[100][255],d[255],aux[255];
int i,k,h,l;
/*char *fisier() {
	char z[40];
	int j;
	j=0;
	z[0]='/0';
	while (s[i]!=','&&s[i]!=')'){ 
		z[j]=s[i];
		j++;
	}
	return z;
}*/
/*
char folder() {
	char z[40];
	z[0]='/0';
	while (s[i]!=','&&s[i]!=')') strcat(z,s[i]);
    return z;
}
*/	

void eval(char *f){
	char x[40],y[255];
	int j;
	j=0;
	if(s[i]>='a'&&s[i]<='z'){
		//x=fisier();
		while (s[i]!=','&&s[i]!=')'){ x[j]=s[i]; i++; j++;}
		x[j]='\0';
		k++;
		strcpy(a[k],f);
		/*j=strlen(f);
		a[k][j]=92;*/
		strcat(a[k],x);
	}
	if(s[i]<='Z'&&s[i]>='A'){
		//x=folder();
		while (s[i]!='('){ x[j]=s[i]; i++; j++;}
	    x[j]='\0';
		strcpy(y,f);
		strcat(y,x);
		j=strlen(y);
		y[j]=92;
		y[j+1]=0;
		i++;
		eval(y);
		i++;
	}
	while (s[i]==','){
		i++;
		if(s[i]>='a'&&s[i]<='z'){
			j=0;
			while (s[i]!=','&&s[i]!=')'){ x[j]=s[i]; i++; j++;}
			x[j]='\0';
		  //  x=fisier();
		    k++;
		    strcpy(a[k],f);
			/*j=strlen(f);
			a[k][j]=92;*/
			strcat(a[k],x);
	    }
		if(s[i]<='Z'&&s[i]>='A'){
			j=0;
			//x=folder();
			while (s[i]!='('){ x[j]=s[i]; i++; j++;}
			x[j]='\0';
			strcpy(y,f);
		    strcat(y,x);
			j=strlen(y);
			y[j]=92;
			y[j+1]=0;
		    i++;
			eval(y);
			i++;
	    }
	}	
	return;
}

int main(){
	freopen("dir.in","r",stdin);
	freopen("dir.out","w",stdout);
	gets(s);
	i=0; k=0;
	eval(d);
	printf("%d\n",k);
	for(l=1;l<k;l++)
		for (h=1+l;h<=k;h++)
			if(strcmp(a[l],a[h])>0){strcpy(aux,a[l]); strcpy(a[l],a[h]); strcpy(a[h],aux);}
	for(i=1;i<=k;i++)
		puts(a[i]);
	return 0;
}