[C++] Problema con la lettura di una matrice da file

di Anonimizzato14829 il
5 risposte
Ciao a tutti, sono nuovo del forum! Vorrei chiedere aiuto a voi esperti circa un programma che non riesco a fare. Devo leggere una matrice da file di testo e poi trovarne il punto di sella. Sul punto di sella non ci sono problemi, so come si fa, il problema è leggere la matrice da file e soprattutto il riempimento delle righe e delle colonne... è una matrice quadrata 4x4. L'input da file di testo è questo:
4
2 17 19 22
3 20 7 9
25 23 32 40
13 21 27 39

Tuttavia non so come fargli leggere solamente il primo numero come riempimento delle righe e delle colonne. Vi posto quello che ho fatto fino ad ora, ma funziona solo se l'input è questo:

2 17 19 22
3 20 7 9
25 23 32 40
13 21 27 39


Ecco il programma (così funziona, ma va completato e non so come! Grazie a chiunque mi darà una mano):

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdlib.h>
#define R 4
#define C 4


using namespace std;
 
 
void leggomat() {

 int mat[R][C];

   // legge dati
   ifstream dati("mat.txt");
   int r = 0;
   while(!dati.eof())
   {
      dati >> mat[r][0] >> mat[r][1] >> mat[r][2] >> mat[r][3];
      r++;
   }
   dati.close();

   // visualizza dati
   int i;
   for(i=0; i<r; i++)
      cout <<  mat[i][0] << " " << mat[i][1] << " " << mat[i][2] << " "<< mat [i] [3] << endl;
      
  }
  

 int main () {
  	
     leggomat();
	 
	 
	 return 0;  }

5 Risposte

  • Usa il tag Code per postare il codice.
    Ecco il programma (così funziona, ma va completato e non so come! Grazie a chiunque mi darà una mano)
    Se la lettura con leggomat() funziona, prosegui la ricerca del punto di sella. Cos'è che ti blocca?
  • Ciao, grazie per la risposta! Il problema è che devo far leggere al programma quel 4 in alto a tutto sull'input, per dirgli che 4 sarebbero il numero di righe e colonne (R, C), ma siccome sono un neofita della programmazione non lo riesco a fare...
  • Se la dimensione della matrice è fissa, 4x4, potresti semplicemente fare una lettura a vuoto per saltare il dato.
    Se invece la dimensione della matrice è dinamica, nxn, hai due strade:
    - lavori con una matrice con una dimensione massima (però devi fare attenzione che la dimensione richiesta da file non sia maggiore del massimo)
    - lavori con una matrice allocata dinamicamente (con malloc() o new)
  • Grazie ancora per le vostre risposte, tenterò di rifare il programma in altro modo, poi posterò la soluzione in modo che anche altri possano beneficiarne. Mi scuso per il Cross Posting, tuttavia ci tengo a dire che non l'ho fatto assolutamente in mala fede, desideravo avere più possibilità di risposta in quanto fino a questo momento nessuna era stata soddisfacente.
Devi accedere o registrarti per scrivere nel forum
5 risposte