Pagini recente » Cod sursa (job #439570) | Cod sursa (job #2898650) | Cod sursa (job #2328577) | Cod sursa (job #2433149) | Cod sursa (job #1477157)
#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);
}