Oi, tenho um problema neste codigo. Queria que a função Fracio24Q enviasse 24 resultados para um vector... mas não estou a conseguir alguém me pode ajudar? #include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <windows.h>
#include <sys/param.h>
#include <dirent.h>
//#include <sys/dir.h>
//Funçoes
void FMatriz(FILE *fp, int matriz[][20]);
double FRacio24Q(int matriz[][20], double *quad);
void Resultados (FILE *fr, char *fp, double r24q[], char *pathname);
//Funçao Principal
int main(int argc, char *argv[])
{
FILE *fp, *fname2;
DIR *dirp;
char pathname[MAXPATHLEN],filename[MAXPATHLEN], nomef[128];
struct dirent *entrada;
int matriz[30][20];
double r24q[24], valor[24];
int i;
//Escolha da directoria
printf("Directoria dos ficheiros?\n");
fgets(pathname,MAXPATHLEN,stdin);
if(pathname[strlen(pathname)-1]=='\n')
{
pathname[strlen(pathname)-1]='';
}
if((dirp=opendir(pathname))==NULL)
{
printf("Erro ao abrir directoria\n");
exit(1);
}
//Procurar ficheiros da directoria
while((entrada=readdir(dirp))!=NULL)
{
//Filtragem
if(strcmp(entrada->d_name,".")==0 || (strcmp(entrada->d_name,"..")==0))
{
continue;
}
//Abrir Ficheiro
sprintf(filename,"%s\\%s",pathname,entrada->d_name);
fp = fopen(filename,"r");
if(fp==NULL)
{
printf("Erro na abertura do ficheiro \n");
}
//Mostra o nome do ficheiro
printf("\nFicheiro: %s\\%s aberto \n",pathname,entrada->d_name);
//chamamento de funçoes
FMatriz(fp, matriz);
for(i=0; i<24; i++)
{
r24q[i]=FRacio24Q(matriz, valor);
}
Resultados(fopen("vector.txt","a"), entrada->d_name, r24q, pathname);
fflush(stdin);
free(filename);
fclose(fp);
}
getchar();
}
// Escrever Matriz
void FMatriz(FILE *fp, int matriz[][20]){
FILE *fname2;
int i=0,j=0;
char num, nomef[128];
num = fgetc(fp); //Ler um caracter a partir de um fluxo
//fprintf(fname2, nomef);
while(num!=EOF) //Enquanto não chegar ao fim do ficheiro
{
if(num == '0')
{
matriz[i][j]=0;
j++; //incrementa coluna (j)
if(j==20) //se a coluna é a ultima passa para a linha de baixo (incrementa i e j passa a 0)
{
i++;
j=0;
}
}
//Senao, o num é '1', preenche na matriz a posiçao
if(num == '1')
{
matriz[i][j]=1;
j++; //incrementa coluna (j)
if(j==20) //se a coluna é a ultima passa para a linha de baixo (incrementa i e j passa a 0)
{
i++;
j=0;
}
}
//Voltar a ler o valor
num = fgetc(fp);
}
for (i=0; i<30; i++)
{
for (j=0; j<20; j++)
{
//Imprimir matriz no ecra
printf ("%d", matriz[i][j]);
}
//mudança de linha
printf("\n");
}
fclose(fp);
}
double FRacio24Q(int matriz[][20], double *quad){
double cont1=0, cont2=0;
int i=0, j=0, c=0;
int lin_i=0;
int lin_f=5;
int col_i=0;
int col_f=5;
int cont3=0;
printf("\n\nEm 24 Quadrantes\n");
for(i=0; i<24; i++){
quad[i]=0;
}
while(lin_f<=30){
while(col_f<=20){
for(i=lin_i; i<lin_f; i++){
for(j=col_i; j<col_f; j++){
//Conta 1s e 0s na matriz
if((matriz[i][j])==1)
{
cont1++;
}
if((matriz[i][j])==0)
{
cont2++;
}
}
}
cont3++;
//Calcula racio
printf("\nQuadrante %d", cont3);
printf("\nNumero de 1s: %f",cont1);
printf("\nNumero de 0s: %f",cont2);
quad[cont3-1]=(cont1/cont2);
printf("\nRacio: %f\n\n\n",quad[cont3-1]);
// lin_i = lin_i + 5;
// lin_f = lin_f + 5;
col_i = col_i + 5;
col_f = col_f + 5;
cont1=0;
cont2=0;
}
lin_i = lin_i + 5;
lin_f = lin_f + 5;
col_i=0;
col_f=5;
}
}
void Resultados (FILE *fr, char *fp, double r24q[], char *pathname)
{
int i=0,c=0;
//fprintf(fr,"%s ", fp); //Escreve o caminho
//Escreve o racio
for(i=0; i<24; i++)
{
printf("%f ", r24q[i]);
}
//fprintf(fr,"%f ", r24q);
//fprintf(fr,"\n");
}