è pari pari quello che ho posta prima,ho solo cambiato quella parte che hai detto tu.Anzi mi da un solo errore,sempre relativo alla riga colonne = i/righe; nella funzione conteggio
codice:
#include <iostream>#include <fstream>
#include <cstdlib>
using namespace std;
int conteggio (int *righe,int *colonne);
void leggi (int **mat,int righe,int colonne);
void stampa (int **mat,int righe,int colonne);
int main ()
{
int *righe;
int *colonne;
int **mat;
bool uscita = false;
int opzione;
conteggio( &righe, &colonne);
cout << righe << colonne;
mat = new int*[righe];
for (int i=0;i<righe;i++)
{
mat[i] = new int [colonne];
}
while (uscita == false)
{
cout << "\nScegli una opzione:\n";
cout << "1)Leggi.\n";
cout << "2)Stampa.\n";
cout << "3)Esci dal programma.\n";
cin >> opzione;
switch (opzione)
{
case (1):
leggi(mat,righe,colonne);
cout << "\n\n\n";
break;
case (2):
stampa (mat,righe,colonne);
cout << "\n\n\n";
break;
case (3): uscita = true;
break;
}
}
cout << "\n\n\n";
}
int conteggio (int *righe,int *colonne)
{
char contarighe[10];
int contacolonne;
fstream file;
file.open("dati.txt",ios::in);
if (!file)
{
cout << "Errore apertura file!";
}
while (!file.eof())
{
file.getline (contarighe,10);
righe++;
}
file.seekg(0);
int i=0;
while (!file.eof())
{
file >> contacolonne;
i++;
}
colonne = i/righe;
}
void leggi(int **mat,int righe,int colonne)
{
fstream file;
file.open("dati.txt",ios::in);
if (!file)
cout << "errore apertura file";
else
{
for (int i=0;i<righe;i++)
{
for (int j=0;j<colonne;j++)
{
file >> mat[i][j];
}
}
cout << "il file e' stato letto con successo\n";
}
system("pause");
}
void stampa (int **mat,int righe,int colonne)
{
for (int i=0;i<righe;i++)
{
for (int j=0;j<colonne;j++)
{
cout << mat[i][j] << " ";
}
cout << "\n";
}
system("pause");
}