Ciao ragazzi, vi riporto un programma che ho fatto come esercizio in vista di un esaame preso da qua: (numero 2)
http://web.diegm.uniud.it/pierluca/public_html/teaching/fpac/prove_scritte/fp_150618.pdf
Questo è il codice che ho scritto, ma mi ritorna errore di segmentazione core dumped....
Qualcuno è così gentile da spiegarmi dove sbaglio per favore? Grazie! :)
Ps. Sono consapevole che la formattazione di quello che stampa è probabilmente sbagliata, ma l'avrei aggiustata una volta che il programma funziona...
http://web.diegm.uniud.it/pierluca/public_html/teaching/fpac/prove_scritte/fp_150618.pdf
Questo è il codice che ho scritto, ma mi ritorna errore di segmentazione core dumped....
Qualcuno è così gentile da spiegarmi dove sbaglio per favore? Grazie! :)
#include <stdio.h>
#include <stdlib.h>
#define N 6
void ricerca_e_stampa_elementi(double **mat, int ncol, int nrig, double elementi[]);
void inizializza_matrice(double **matri, char rig[] , int righe, int colonne);
int main(int argc, char *argv[])
{
int l;
int nrighe;
int ncolonne;
double elementi[N];
char riga[21];
double *matrix[nrighe][ncolonne];
FILE *fin1;
FILE *fin2;
if(argc!=2)
{
printf("numero argomenti insufficiente");
exit (EXIT_FAILURE);
}
if((fin1=fopen(argv[1], "r"))==NULL)
{
printf("errore apertura primo file");
exit (EXIT_FAILURE);
}
fscanf(fin1, "%d %d", &nrighe, &ncolonne);
/*ho allocato lo spazio per la matrice ora la devo inizizializzare*/
while(l<=nrighe)
{
while(fgets(riga, 21, fin1)!=NULL)
{
inizializza_matrice(*matrix, riga, l, ncolonne);
}
l++;
}
/*a questo punto ho inizializzato la matrice, devo mettere gli elemnti da ricercare in un vettore e chiamare una funzione che ricerchi gli elementi del vettore nella matrice*/
if((fin2=fopen(argv[2], "r"))==NULL)
{
printf("errore apertura secondo file");
exit (EXIT_FAILURE);
}
/*il file che contiene gli elementi da ricercare ha 7 elementi per riga*/
while(fscanf(fin2, "%lf %lf %lf %lf %lf %lf %lf", &elementi[0],&elementi[1], &elementi[2], &elementi[3], &elementi[4], &elementi[5], &elementi[6])!=EOF)
{
ricerca_e_stampa_elementi(*matrix, ncolonne, nrighe, elementi);
}
return (EXIT_SUCCESS);
}
void inizializza_matrice(double **matri, char rig[] , int righe, int colonne)
{
int j;
j=0;
while(j<=colonne)
{
matri[righe][j]=(atof(&rig[j]));
j++;
}
return;
}
void ricerca_e_stampa_elementi(double **mat, int ncol, int nrig, double elementi[])
{
int c, r, k;
c=r=k=0;
while(k<=N)
{
printf("%f: ", elementi[k]);
while(r<=nrig)
{
while(c<=ncol)
{
if(mat[r][c]==(elementi[k]))
{
printf("{%d,%d}", r, c);
}
c++;
}
c=0;
r++;
}
k++;
}
return;
}
Ps. Sono consapevole che la formattazione di quello che stampa è probabilmente sbagliata, ma l'avrei aggiustata una volta che il programma funziona...
Ultima modifica: