15/12/09 14:49
marcello90
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
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
/*
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: #include <iostream> #include <fstream> #include <string.h> #define N 100 using namespace std; float input(double); int input(int); //Struct struct aereoporto{ char codice[N]; char partenza[N]; char citta[N]; char arrivo[N]; int posti; float prezzo; }; aereoporto volo[N]; aereoporto volo_2[N]; aereoporto comodo; int scelta,conta=0,conta_2=0,conta_3=0,i,j,nodo=0; char a='s'; int lun_int(float); int main() { //Creazione del file info.txt ofstream info("info.txt"); if(info){ for(i=0;a=='s';i++) { cout<<"\n Codice Volo: "; cin>>volo[i].codice; cout<<"\n Orario di Partenza: "; cin>>volo[i].partenza; cout<<"\n Citta': "; cin>>volo[i].citta; cout<<"\n Orario di arrivo: "; cin>>volo[i].arrivo; cout<<"\n Numero posti: "; volo[i].posti=input(2); cout<<"\n Prezzo: "; volo[i].prezzo=input(0.25); system("cls"); conta++; nodo=1; cout<<"\n Vuoi continuare? s/n "; cin>>a; system("cls"); } //Ordinamente del file info.txt in base al codice for(i=0;i<conta-1;i++) for(j=i+1;j<conta;j++) if(strcmp(volo[i].codice,volo[j].codice)>0){ comodo=volo[i]; volo[i]=volo[j]; volo[j]=comodo; } //Scrittura del file info.txt for(i=0;i<conta;i++) 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"; info.close(); } //Creazione del file prezzi.txt ofstream prezzi("prezzi.txt",ios::app); if(prezzi){ a='s'; for(i=0;a=='s';i++) { cout<<"\n Codice Volo: "; cin>>volo_2[i].codice; cout<<"\n Prezzo: "; volo_2[i].prezzo=input(3.1); system("cls"); conta_2++; cout<<"\n Vuoi continuare? s/n "; cin>>a; system("cls"); } //Ordinamento del file prezzi.txt in base al codice for(i=0;i<conta-1;i++) for(j=i+1;j<conta;j++) if(strcmp(volo[i].codice,volo[j].codice)>0){ comodo=volo_2[i]; volo_2[i]=volo_2[j]; volo_2[j]=comodo; } //Scrittura sul file prezzi.txt for(i=0;i<conta_2;i++) prezzi<<volo_2[i].codice<<"\t"<<volo_2[i].prezzo<<"\n"; prezzi.close(); } //Lettura del file info.txt ifstream leggi("info.txt"); if(nodo!=0){ if(info){ for(i=0;!info.eof();i++){ leggi>>volo[i].codice>>volo[i].partenza>>volo[i].citta>>volo[i].arrivo>>volo[i].posti>>volo[i].prezzo; cout<<volo[i].codice; conta_3++; } info.close(); }} else cout<<"\n Dati non presenti \n"; cout<<"ciao"; // ofstream hold_file("oldInfo.txt"); system("pause"); for(i=0;i<conta_3;i++) 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"; hold_file.close(); return 0; } float input(double){ float file; while(!(cin>>file)){ system("cls"); cout<<" Input errato,reinserisci il valore \n"; cin.clear(); cin.ignore(80,'\n'); } return file; } int input(int){ int file; while(!(cin>>file)){ system("cls"); cout<<" Input errato,reinserisci il valore \n"; cin.clear(); cin.ignore(80,'\n'); } return file; }
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
aaa