Salve a tutti scusate se chiedo sempre spero un giorno di poter aiutare altri in difficoltà come me e ricambiare.
Il mio programma è molto semplice deve prendere da file una matrice allocarla dinamicamente stamparla e poi successivamente prendere questa matrice e fare le somme degli elementi delle righe e metterli un array anch'esso allocato dinamicamente però mi stampa cose che non centrano non capisco cosa sbaglio.
Questo è il moi file.txt
3
1 2 3
4 5 8
5 1 1
Questa è la mia libreria:
codice:#include <iostream> #include <cstdlib> #include <fstream> #include <cstring> using namespace std; #define N 100 typedef char Stringa [N]; void carica_file(Stringa , fstream &, int *); void riempimento_matrice(Stringa ,fstream &, int **, int d); void stampa_matrice(int ** ,const int ); void somma_righe(int **, int *, const int); void stampa_vettore(int *, const int );
Questa è sono le mie funzioni :
Questo è il mio main:codice:#include "summat.h" void carica_file(Stringa nome, fstream &f, int *size){ int d; cout<<"\n Inserisci nome del file :"; cin.getline( nome, N-1, '\n'); f.open(nome, ios::in); if(!f){ cout<<"\n Errore in fase di apertura file insesitente o nome errato."; exit(1); }else { f>>d; } *size=d; } void riempimento_matrice(Stringa nome, fstream &f, int **m, int d){ for(int i=0; i<d; i++){ for(int j=0; j<d; j++){ f>>m[i][j]; } } f.close(); } void stampa_matrice( int **matrix,const int dimensione){ for(int i=0; i<dimensione; i++){ for(int j=0; j<dimensione; j++){ cout<<matrix[i][j]<<" "; } cout<<endl; } cout<<endl; } void somma_righe(int **mat, int *vett, const int dim){ int somma=0, cont=0, tot=0, x=0; for(int i=0; i<dim; i++){ for(int j=0; j<dim; j++){ somma += mat[i][j]; cont++; if(cont==dim){ vett[x]=somma; x++; somma=0; } } } } void stampa_vettore(int *vett, const int d){ cout<<"\n Il vettore delle somme delle righe è il seguente: \n"; for(int i =0; i<d; i++){ cout<<vett[i]<<endl; } }
Questo è quello che mi stampa:codice:#include "summat.h" int main(){ Stringa nome_file; fstream file; int **mat; int dim; carica_file(nome_file, file, &dim); mat= new int*[dim]; for(int i=0; i<dim; i++){ mat[i]= new int[dim]; } riempimento_matrice(nome_file, file, mat, dim); cout<<"\n La matrice letta è: \n"; stampa_matrice(mat, dim); int *vet= new int [dim]; stampa_vettore(vet, dim); }
1.png
2.png

Rispondi quotando