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 :
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 è il mio main:
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);
}
Questo è quello che mi stampa:
1.png
2.png