Salve a tutti, sto scrivendo un programma in C per risolvere un sistema di equazioni (triangolare superiore) con il metodo di sostituzione all' indietro.
Senza entrambe le righe sottolineate ho nel debug un segmentation fault, decommentandole il compilatore non protesta(a me non servono).perchè? ecco il code :
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[]){
char name[256] = {0};
FILE *fp = NULL;
int* matrixstorage;
int** matrix;
int* solution;
int rows;
int columns;
int numelements;
int i;
int j;
int k=0;
if (argc != 2){
printf("Digitare il percorso del file contenente il sistema");
}
fp = fopen(argv[1], "r");
fscanf(fp,"%d",&rows);
fscanf(fp,"%d",&columns);
numelements = (((rows*columns)/2)+rows);
matrixstorage = (int*)malloc((rows*((columns)/2)+rows)*sizeof(int));
matrix = malloc(rows*sizeof(int*));
solution = malloc(rows*sizeof(int*));
for(i = 0;i<rows;i++){
matrix[i]=&matrixstorage[k];
k=k+columns-i;
//matrix[i]=&matrixstorage[i*(n+1)];
}
for(i = 0;i<numelements;i++){
fscanf(fp,"%d",matrixstorage+i);
//int value=(*(matrixstorage+i));
//printf("%d ",*(matrixstorage+i));
}
system("PAUSE");
}

Rispondi quotando
, avevo sbagliato a calcolare il numero di elementi della matrice del sistema. Il file contiene come primo elemento sulla prima riga il numero di righe del sistema e come primo elemento della seconda riga il numero di colonne del sistema.