@devair1010Cheguei até aqui, ta lendo o arquivo certo, mas não to conseguindo imprimir a quantidade certa e falta a questão do tempo também.
Se conseguir da uma mão agradeço!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct arq{
int cod;
char t[45];
char aut[30];
int m;
int a;
};
typedef struct arq ARQ;
void main(){
FILE *f=NULL;
FILE *r=NULL;
ARQ l[9999];
int i,z,j;
int c;
int conta[2020],contm[12];
int auxa,auxm;
int contitulo,contautor;
int menora,menorm;
char arquivo[400];
printf("Digite o nome do arquivo:\n");
scanf("%s", arquivo);
f = fopen(arquivo,"r");
if (f==NULL){
printf("Erro ao abrir o arquivo. %s\n",arquivo);
exit(0);
}
i=0;
while(fscanf(f,"%d",&l[i].cod)>0){
(fgets(l[i].t,45,f));
(fgets(l[i].aut,30,f));
fscanf(f,"%d\n",&z);
l[i].m=z/10000;
l[i].a=z%10000;
printf("codigo %d\n",l[i].cod);
printf("titulo %s\n",l[i].t);
contitulo++;
printf("autor %s\n",l[i].aut);
contautor++;
printf("mes %d\n",l[i].m);
contm[l[i].m]++;
printf("ano %d\n",l[i].a);
conta[l[i].a]++;
i++;
}
for (j=0;j<2020;j++){
for (i=0;i<2020;i++){
if(conta[i]<conta[i+1]){
auxa=conta[i];
conta[i]=conta[i+1];
conta[i+1]=auxa;
}
}
}
for (j=0;j<12;j++){
for (i=0;i<12;i++){
if(contm[i]<contm[i+1]){
auxm=contm[i];
contm[i]=contm[i+1];
contm[i+1]=auxm;
}
}
}
for(i==2019;i>=0;i--){
if(i>0){
menora=conta[i];
i=-1;
}
}
for(i==12;i>=0;i--){
if(i>0){
menorm=contm[i];
i=-1;
}
}
if((r=fopen("resposta.txt","wb"))==NULL) {
printf("Arquivo não pode ser aberto\n");
exit(1);
}
fprintf(r,"titulos: %d\n",contitulo);
fprintf(r,"autores: %d\n",contautor);
fprintf(r,"ano com mais: %d\n",conta[0]);
fprintf(r,"ano com menos: %d\n",menora);
fprintf(r,"mes com mais: %d\n",contm[0]);
fprintf(r,"mes com menos: %d\n",menorm);
}