Problema con l'implementazione di un file

di il
5 risposte

Problema con l'implementazione di un file

Salve ragazzi, vi allego la traccia di questo esercizio: 

Vogliamo rappresentare i collegamenti stradali fra N città. Ogni città e’ rappresentata con un nome, numero di abitanti, numero di collegamenti stradali entranti e uscenti (come spiegato nel seguito). Manteniamo l’insieme delle città in un vettore V. Le informazioni sui collegamenti stradali sono contenute in un file (roads.txt) organizzato con una tripla di su ogni riga, due interi e un float, (es.):

0   3   32.6

4   7   21.4
.
.
.
.
Ogni tripla (x,y,d) rappresenta un collegamento stradale di lunghezza d fra la città x e la città y, . La matrice di adiacenza del grafo stradale è una matrice A (non necessariamente simmetrica perche’ ci potrebbero essere collegamenti stradali a senso unico), di dimensioni NxN, di un cui A[i][j] = d rappresenta che c’e’ un collegamento stradale fra la città i e la città j, in questo caso il collegamento è uscente dalla città i ed entrante nella città j. A[i][j] = 0 invece rappresenta che le due città i e j non sono collegate. Implementare le strutture dati per rappresentare i collegamenti stradali delle N città.

In particolare, ho difficoltà sull'implementazione del file con i collegamenti stradali, nel senso che non riesco a capire come implementarlo… Anche perché poi il resto dell'esercizio so come farlo, ma per il file non ho proprio idee.

Qualcuno può darmi una mano anche solo con dei suggerimenti? 

Grazie mille!

5 Risposte

  • Re: Problema con l'implementazione di un file

    L'esercizio ti ha detto esattamente come è fatto il file, su cosa sei bloccato? Non sai come leggere e scrivere le righe di un file?

  • Re: Problema con l'implementazione di un file

    Il mio problema è che credo che l'esercizio voglia che tramite il programma io scriva i dati sui collegamenti stradali nel file (o forse li dovrei direttamente scrivere nel file e poi leggerli solamente dal programma?). Ed è qui che mi blocco: perché creo l'header delle città, ma poi come faccio a riempire il file testo? 

    Perché la mia idea era di fare una cosa simile: 

    #include “Citta.h”
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main()
    {
        vector<Citta> citta; 
        ostream outRoads{"Roads.txt", ios::out}; 
        //Check sulla corretta apertura del file
       //.........
    
       Citta c1 {"Milano", 450000, 1, 2}; 
       Citta c2 {"Roma", 900000, 1, 1}; 
       double d; //Distanza tra c1 e c2
    
       cout << "Inserisci dati nel file (premi Ctrl-Z per terminare)\n"; 
       //Riempio il file:
       while(cin >> c1.nome >> c2.nome >> d)
       {
           outRoads << c1 << "  " << c2 << "  " << d << endl;
           cout << "? "; 
        }
    }

    Potrebbe andare? 

  • Re: Problema con l'implementazione di un file

    Lascia perdere l'input da terminale, che ti porti dietro altre problematiche che l'esercizio non richiede di affrontare.

    Prova a inizializzare vettore e matrice a mano

    string citta[3]    = {    "Milano", "Roma", "Napoli"};
    float strade[3][3] = {   {     0.0,  571.4,    768.5},
                             {   571.4,    0.0,    223.1},
                             {   768.5,  223.1,      0.0},   };                         

    Per poi salvarli su file e rileggerli successivamente

  • Re: Problema con l'implementazione di un file

    Semantica: i file NON SI IMPLEMENTANO.

    si leggono e scrivono. 

    sono gli algoritmi quelli che si ‘implementano’ 

  • Re: Problema con l'implementazione di un file

    Il file deve essere di tipo ofstream.

    c1 e c2 sono delle struct. Nell'output devi metterci i singoli campi. 

Devi accedere o registrarti per scrivere nel forum
5 risposte