Cod sursa(job #1477153)

Utilizator BodStfBodoarca Stefan BodStf Data 25 august 2015 17:07:23
Problema Text Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>

void incarca(FILE* stream,int &l,int** c,char**** mat)
{
	char*** m=NULL,*tok,line[1024];
	int i=0,j,*v=NULL;
	while(!feof(stream))
	{
		m=(char***)realloc(m,(i+1)*sizeof(char**));
		m[i]=NULL;
		j=0;
		fgets(line,1024,stream);
		tok=strtok(line," \n,;.!-");
		while(tok)
		{
			m[i]=(char**)realloc(m[i],(j+1)*sizeof(char*));
			m[i][j]=NULL;
			m[i][j]=(char*)malloc((strlen(tok)+1)*sizeof(char));
			strcpy(m[i][j],tok);
			tok=strtok(NULL," \n,;.!-");
			j++;
		}
		v=(int*)realloc(v,(i+1)*sizeof(int));
		v[i]=j;
		i++;
	}
	(*mat)=m;
	(*c)=v;
	l=i;
}

void dezalocare(char*** mat,int l,int* c)
{
	int i,j;
	for(i=0;i<l;i++)
	{
		for(j=0;j<c[i];j++)
		{
			mat[i][j]=NULL;
			free(mat[i][j]);
		}
		mat[i]=NULL;
		free(mat[i]);
	}
	mat=NULL;
	free(mat);
}

int main()
{
	FILE* f1,*f2;
	f1=fopen("text.in","r");
	f2=fopen("text.out","w");
	
	char*** mat;
	int l,*c,length=0,i,j,nr=0;
	incarca(f1,l,&c,&mat);
	for(i=0;i<l;i++)
	{
		for(j=0;j<c[i];j++)
			length+=strlen(mat[i][j]);
		nr+=c[i];
	}
	fprintf(f2,"%d\n",length/nr);

	dezalocare(mat,l,c);
	fclose(f1);
	fclose(f2);
}