Lettura file c

di il
7 risposte

Lettura file c

Salve a tutti ho questo esercizio
Scrivere un programma booking che permetta di analizzare un database di alberghi. In particolare, il
database contiene sul primo rigo le parole albergo e prezzo e la sequenza di servizi, e le righe successive
contengono il nome di un albergo, il suo prezzo e la disponibilità del servizio: SI denota la presenza del
servizio e NO denota la sua assenza. Ecco un esempio di database:
albergo prezzo tv bagno condizionatore frigo_bar
Mediterranea 80 SI NO SI NO
Poseidon 160 NO SI SI SI
Plaza 135 SI SI SI SI
Bruman 150 NO NO SI SI
Fiorenza 77 SI SI NO NO

Il programma dovrà permettere di interrogare il database fornendo le seguenti informazioni:
1. se lanciato senza parametri mostra a video tutte le informazioni dell’albergo con prezzo minimo. Ad
esempio con il primo database:
> ./booking
hotel: Fiorenza
prezzo: 77
servizi: tv bagno

come faccio a comparare i prezzi di tutti gli hotel? grazie mille

7 Risposte

  • Re: Lettura file c

    E' un esercizio simile al precedente, tranne per il fatto che devi confrontare i dati della linea corrente e confrontarli con quelli che hai memorizzato con il prezzo minore, eventualmente aggiornandoli.
  • Re: Lettura file c

    E lo so il problema è proprio questo confronto tra i dati delle righe come lo devo fare?
  • Re: Lettura file c

    Io ho provato a fare cosi ma giustamente non funziona... devo per forza utilizzare una struttura o c'è un altro metodo?
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct {
      char nome[20];
      float prezzo;
      char tv[3];
      char bagno[3];
      char condizionatore[3];
      char frigo[3];
    } part;
    
    int main(int argc, char *argv[])
    {
    
       part tlist[50];
       int i=0;
       FILE *fp;
    
       if(fp=fopen("alberghi.db", "r")==NULL)
       {
    	printf("impossibile aprire il file\n");
       }
    
       if(argc==1)
       {
            while(feof(fp))
    	{
    	   fgets(tlist, 80, fp);
    	   sscanf(fp, "%s %f %s %s %s %s", tlist[i].nome, tlist[i].&prezzo, tlist[i].tv, 			tlist[i].bagno, tlist[i].condizionatore,tlist[i].frigo);
    	   i++;
    	
               
    	} 
       }
    }
    
  • Re: Lettura file c

    Scusa, ma tu non affronti teoricamente il problema, magari con un "diagramma a blocchi" o uno "pseudocodice" che ti possa aiutare a trovare l'algoritmo da usare PRIMA di scrivere il corrispondente codice C? Devi riflettere sul problema e fare le tue ipotesi di soluzione, non puoi scrivere subito codice. E devi pensarci tanto, altrimenti non imparerai mai.

    La struttura è una comodità ma non è necessaria. Ma SE LEGGI da file di testo con fgets devi sempre utilizzare una stringa, non direttamente la struttura (che puoi utilizzare solo con un file binario).

    Ti ho appena detto di evitare la feof e spiegato come fare e tu insisti. Allora è inutile rispondere ...

    E' necessario avere due gruppi di variabili, il primo con tutti i dati letti in un certo momento nel ciclo e l'altro gruppo con i dati dell'albergo con prezzo minore. Se leggi dal file una riga con prezzo minore di quella memorizzata allora aggiorni i dati.

    Ad esempio, per il prezzo avrai

    prezzo

    prezzomin

    leggendo dal file in prezzo, se prezzo<prezzomin allora prezzomin=prezzo (e così per tutti gli altri campi).
  • Re: Lettura file c

    Hai ragione oggi è l'esame e sto buttando giù codici da giorni, mi ero impallato sulla questione delle righe però riflettendoci basta usare una semplice variabile come ho sempre fatto per trovare max e min... scusami l'ansia da esame mi sta uccidendo
  • Re: Lettura file c

    Beh, in bocca al lupo.
  • Re: Lettura file c

    Essendo romanista, crepi l'aquila
Devi accedere o registrarti per scrivere nel forum
7 risposte