Ciao a tutti, sono nuova ed avrei bisogno di una mano.
In sostanza devo leggere una matrice da un file di testo e ho scritto un codice nel quale scrivo tutto nel main e l'altro invece dove suddivido in funzioni. Il primo compila e funziona, il secondo viene compilato ma al momento dell'esecuzione si blocca. Qualcuno può spiegarmi perchè ed aiutarmi? Grazie in anticipo! Vi posto i codici
Il file di testo contiene i seguenti dati:
3
4
1 3 0 2
7 0 6 1
8 5 4 9
Primo codice:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
char file[20];
int R, C, i, j;
//lettura file
cout << "Come si chiama il file da aprire? \n" << endl;
cin >> file;
fstream matrice;
matrice.open(file , ios::in);
//lettura numero righe
matrice >> R >> C;
//allocazione dinamica matrice
double **matrix;
matrix = new double*[R];
for(i = 0; i < R; i++){
matrix[i] = new double[C];
}
//lettura della matrice da file
for(i = 0; i < R ; i++){
for (j = 0; j < C; j++){
matrice >> matrix[i][j];
}
}
//stampa della matrice
for(i = 0; i < R; i++){
cout << "\n" << endl;
for( j = 0; j < C; j++){
cout << matrix[i][j];
}
}
Secondo codice:
#include <iostream>
#include <fstream>
using namespace std;
double **alloc(int R, int C) {
double **matrix;
matrix = new double*[R];
for(int i = 0; i < R; i++){
matrix[i] = new double[C];
}
return matrix;
}
double **dim_alloc(){
char file[20];
int R, C, i, j;
double **matrix;
cout << "Come si chiama il file da aprire? \n" << endl;
cin >> file;
fstream matrice;
matrice.open(file , ios::in);
//lettura numero righe
matrice >> R >> C;
cout << R << C << endl;
//Allocazione della matrice
alloc(R, C);
for(int i = 0; i < R ; i++){
for (int j = 0; j < C; j++){
matrice >> matrix[i][j];
}
}
}
int main(){
double **matrix;
int R, C, i, j;
dim_alloc();
/*
for(i = 0; i < R; i++){
cout << "\n" << endl;
for(j = 0; j < C; j++){
cout << matrix[i][j];
}
}
*/
}