Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Gestione file C++
Forum - C/C++ - Gestione file C++

Avatar
marcello90 (Normal User)
Newbie


Messaggi: 5
Iscritto: 15/12/2009

Segnala al moderatore
Postato alle 15:49
Martedì, 15/12/2009
Questa e' la consegna
/*
Si deve costruire un programma che ha in input:

due file di testo, il primo,"info.txt" contiene le informazioni sugli aerei che partono da una determinata città.Ogni linea contiene le seguenti informazioni:

codice volo partenza città arrivo posti prezzo.

Per esempio, il contenuto di una linea può essere il seguente:

A143 14.00 Venezia 15.15 143 75.48

Il file è ordinato per codice volo.

Il secondo "prezzi.txt", contiene le informazioni relative all'aggiornamento dei prezzi di ogni linea e contiene solo le seguenti informazioni:

codice volo prezzo

per esempio, il contenuto di una linea può essere il seguente:

A143 84.54

Il file è ordinato per codice volo.

Il programma fornisce in output:

due file di testo, il primo "oldInfo.txt", è identico al file "info.txt", il secondo, "info.txt", si ottiene aggiornando i prezzi del primo file di input.

Il programma deve gestire l'eventuale presenza in "prezzi.txt" di un codice volo inesistente.

Il programma, infine, deve mostrare sul monitor il contenuto di due file di output visualizzando. contemporaneamente, una linea di ciascun file di output.

esempio di output sul monitor:

A143 14.00 Venezia 15.15 143 75.48

A143 14.00 Venezia 15.15 143 84.54

A148 15.30 Milano 16.40 220 93.12

A148 15.30 Milano 16.40 220 98.62
Codice sorgente - presumibilmente C++

  1. */
  2.  
  3. codice:
  4. #include <iostream>
  5.  
  6. #include <fstream>
  7. #include <string.h>
  8. #define N 100
  9. using namespace std;
  10. float input(double);
  11. int input(int);
  12.  
  13. //Struct
  14. struct aereoporto{
  15. char codice[N];  
  16. char partenza[N];
  17. char citta[N];
  18. char arrivo[N];
  19. int posti;
  20. float prezzo;
  21. };
  22. aereoporto volo[N];
  23. aereoporto volo_2[N];
  24. aereoporto comodo;
  25. int scelta,conta=0,conta_2=0,conta_3=0,i,j,nodo=0;
  26. char a='s';    
  27. int lun_int(float);
  28. int main()
  29. {
  30.  //Creazione del file info.txt  
  31.    ofstream info("info.txt");
  32.             if(info){
  33.                          
  34.                          for(i=0;a=='s';i++)
  35.                          {
  36.                          cout<<"\n Codice Volo:  ";
  37.                          cin>>volo[i].codice;
  38.                          cout<<"\n Orario di Partenza:  ";
  39.                          cin>>volo[i].partenza;
  40.                          cout<<"\n Citta':  ";
  41.                          cin>>volo[i].citta;
  42.                          cout<<"\n Orario di arrivo:  ";
  43.                          cin>>volo[i].arrivo;
  44.                          cout<<"\n Numero posti:  ";
  45.                          volo[i].posti=input(2);
  46.                          cout<<"\n Prezzo:  ";
  47.                          volo[i].prezzo=input(0.25);
  48.                          system("cls");
  49.                          conta++;
  50.                          nodo=1;
  51.                          cout<<"\n Vuoi continuare? s/n ";
  52.                          cin>>a;
  53.                          system("cls");
  54.                          }
  55.                          //Ordinamente del file info.txt in base al codice
  56.                          for(i=0;i<conta-1;i++)
  57.                          for(j=i+1;j<conta;j++)
  58.                          if(strcmp(volo[i].codice,volo[j].codice)>0){
  59.                          comodo=volo[i];
  60.                          volo[i]=volo[j];  
  61.                          volo[j]=comodo;                              
  62.                                                            
  63.                          }
  64.                          //Scrittura del file info.txt
  65.                          for(i=0;i<conta;i++)
  66.                          info<<volo[i].codice<<"\t"<<volo[i].partenza<<"\t"<<volo[i].citta<<"\t"<<volo[i].arrivo<<"\t"<<volo[i].posti<<"\t"<<volo[i].prezzo<<"\n";
  67.                          info.close();
  68.                          }  
  69.  
  70. //Creazione del file prezzi.txt
  71.  
  72.       ofstream prezzi("prezzi.txt",ios::app);
  73.             if(prezzi){
  74.                          a='s';
  75.                          for(i=0;a=='s';i++)
  76.                          {
  77.                          cout<<"\n Codice Volo:  ";
  78.                           cin>>volo_2[i].codice;
  79.                          cout<<"\n Prezzo:  ";
  80.                          volo_2[i].prezzo=input(3.1);
  81.                          system("cls");
  82.                          conta_2++;
  83.                          
  84.                          cout<<"\n Vuoi continuare? s/n ";
  85.                          cin>>a;
  86.                          system("cls");
  87.                          }
  88.                          //Ordinamento del file prezzi.txt in base al codice
  89.                          for(i=0;i<conta-1;i++)
  90.                          for(j=i+1;j<conta;j++)
  91.                          if(strcmp(volo[i].codice,volo[j].codice)>0){
  92.                          comodo=volo_2[i];
  93.                          volo_2[i]=volo_2[j];  
  94.                          volo_2[j]=comodo;                              
  95.                                                            
  96.                          }
  97.                          
  98.                          //Scrittura sul file prezzi.txt
  99.                          for(i=0;i<conta_2;i++)
  100.                          prezzi<<volo_2[i].codice<<"\t"<<volo_2[i].prezzo<<"\n";
  101.                          prezzi.close();
  102.                          }  
  103.                        
  104.                          //Lettura del file info.txt
  105.                          ifstream leggi("info.txt");
  106.                          if(nodo!=0){
  107.                          if(info){
  108.                                     for(i=0;!info.eof();i++){
  109.                                    
  110.                                     leggi>>volo[i].codice>>volo[i].partenza>>volo[i].citta>>volo[i].arrivo>>volo[i].posti>>volo[i].prezzo;
  111.                                     cout<<volo[i].codice;
  112.                                     conta_3++;
  113.                                     }
  114.                                    
  115.                                     info.close();
  116.                                     }}
  117.                                    
  118.                                    
  119.                                     else
  120.                                     cout<<"\n Dati non presenti \n";
  121.                                     cout<<"ciao";
  122.                          //
  123.                          ofstream hold_file("oldInfo.txt");
  124.                          system("pause");
  125.                          for(i=0;i<conta_3;i++)
  126.                          hold_file<<volo[i].codice<<"\t"<<volo[i].partenza<<"\t"<<volo[i].citta<<"\t"<<volo[i].arrivo<<"\t"<<volo[i].posti<<"\t"<<volo[i].prezzo<<"\n";
  127.                          hold_file.close();
  128.                          
  129.                          
  130.                          
  131.                          
  132.    
  133.   return 0;
  134. }
  135.  
  136.  
  137.  
  138.  
  139. float input(double){
  140.       float file;
  141.       while(!(cin>>file)){
  142.                         system("cls");  
  143.                         cout<<" Input errato,reinserisci il valore \n";  
  144.                         cin.clear();
  145.                         cin.ignore(80,'\n');
  146.                         }
  147.                         return file;
  148.      
  149.       }
  150.  
  151. int input(int){
  152.     int file;
  153.     while(!(cin>>file)){
  154.                         system("cls");  
  155.                         cout<<" Input errato,reinserisci il valore \n";  
  156.                         cin.clear();
  157.                         cin.ignore(80,'\n');
  158.                         }
  159.                         return file;
  160.    
  161.     }


Sono riuscito a creare il file info.txt facendo l'acquisizione
lo stesso per il file prezzi.txt
apparentemente il i dati presenti nel file info.txt li riesco ad acquisire ma facendo una piccola prova cioe' mettendo un cout all'interno del ciclo mi visualizza vari caratteri strani e termina il programma ==>Si e' verificato un errore....<==
quindi il problema sta nell'acquisire i dati presenti nel file info.txt e immetterli nella struct
grazie

PM Quote
Avatar
Dark Angel (Normal User)
Newbie


Messaggi: 7
Iscritto: 29/11/2009

Segnala al moderatore
Postato alle 15:33
Giovedì, 17/12/2009
Ciao, ho provato il tuo codice e ho visto il tipo di errore che ti da..
Ti do un suggerimento.. fai un pezzo alla volta.. Incomisncia a vedere questo:

//Creazione del file info.txt  
   ofstream info("info.txt");
            if(info){
                   do{  
                        
                         cout<<"\n Codice Volo:  ";
                         cin>>volo.codice;

                         // più tutto il resto.. non sono stata lì a copiare tutto  
                        
                         cout<<"\n Vuoi continuare? s/n ";
                         cin>>a;
                         system("cls");
                        
                       }while(a=='s');

Io ho usato un ciclo do-while e non da più errore..
Il file "info.txt"  viene creato con i valori che ci inserisci..
Fai un passo alla volta così non ti trovi cento errori tutti insieme =D

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 10:53
Venerdì, 18/12/2009

altro consiglio: indenta il codice in maniera "umana", sembra solo un gran casotto...


PM Quote