Cod sursa(job #1361824)

Utilizator codra27Codescu Radu Andrei codra27 Data 25 februarie 2015 23:57:49
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.29 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main ()
{
	FILE *f=fopen("convertor.in", "r");
	FILE *g=fopen("convertor.out", "w");
	int ok=1,i,k=0;
	char *linie;
	linie=malloc(1024*sizeof(char));

	while(ok)
	{
		fgets(linie,1024,f);
		i=0;
		if(linie[i]=='}')
					{
					ok=0;
					break;
					}
			while(linie[i]!='\n')
			{	
			if(linie[i]=='"' || isdigit(linie[i])!=0) 
				{
				if(linie[i]=='"')
				{
				i++;
				k++;
				}
				else if(k%2==0 && isdigit(linie[i]))
					{
					k+=2;
					while(isdigit(linie[i]))
						if(linie[i+1]!='\n')
							i++;
						else break;	
					}
			if(k%4==1)
				{
				while(linie[i]!='"')
					{
					fprintf(g,"%c", linie[i]);	
					i++;
					}
					fprintf(g,",");
				i++;
				k++;
					}
				}	
			i++;
			if(linie[i]=='}')
					{
					ok=0;
					break;
					}
				}
			
	}
	fclose(f);
	FILE *h=fopen("convertor.in", "r");
	ok=1;
	int j,linii=0;
	j=k;
	k=0;
	fprintf(g,"\n");
		while(ok)
			{
			fgets(linie,1024,h);
			i=0;
			if(linie[i]==']')
				break;
			while(linie[i]!='\n')
				{
				if(linie[i]==']')
						{
						ok=0;
						break;
						}
				if(linie[i]=='"' || isdigit(linie[i])!=0)
					
					if(k%4==2)
						{
							
							if(linie[i]=='"')
							{
							i++;
							while(linie[i]!='"')
								{
								fprintf(g,"%c", linie[i]);
								i++;	
								}
							if(linie[i+1]!='\n')
								i++;
								else break;
							fprintf(g,",");
							k+=2;
							
							}	
							 if(isdigit(linie[i]))
								{
								while(isdigit(linie[i]))
										{
										fprintf(g,"%c", linie[i]);
										if(linie[i+1]!='\n')
											i++;
											else break;	
										}	
								fprintf(g,",");
								k+=2;
								
								}	
						}
				else 
					if(linie[i]=='"')
						{
						i++;
						while(linie[i]!='"')
							i++;
						if(linie[i+1]!='\n')
								i++;
								else break;
						k+=2;		
						if(k%(linii*j+j+2)==0)
									{
									fprintf(g,"\n");
									linii++;
									}
						}
				else if(isdigit(linie[i]))
						{
						while(isdigit(linie[i]))
							i++;	
						k+=2;
						if(k%(linii*j+j+2)==0)
									{
									fprintf(g,"\n");
									linii++;
									}
						}
			if(linie[i]==']')
					{
					break;
					ok=0;
					}
			if(linie[i+1]!='\n')
					i++;
				else break;	
				}
			}
	fclose(h);
	fclose(g);
	return 1;
}