Anteprima
Vedrai una selezione di 1 pagina su 4
Esercitazione sui file di testo - Con soluzione Pag. 1
1 su 4
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

TRACCIA

Sia dato in input un file di testo ElencoTreni.txt. Ciascuna riga del file è formata dai seguenti componenti : Codice

del treno, Città di partenza, Ora di partenza, Città di arrivo, Ora di arrivo, Prezzo.

Un esempio di riga è :

AB512 Milano 18:30 Torino 22:30 15.5

Si costruisca un programma in linguaggio C che utilizzi i seguenti moduli (con Treni un tipo di record):

void mostra(Treni treno) //Mostra a video un singolo record

void visualizza(FILE* puntatore) //Mostra a video tutti i record

void mostraPartenze(FILE* puntatore, char partenza[]) //Mostra a video i record con la partenza specificata

void mostraPrezzo(FILE* puntatore, float massimo, float minimo) //Mostra a video i record con il prezzo

compre fra minimo e massimo

Fornire inoltre un messaggio di errore nel caso in cui non ci sia alcun record da rappresentare.

SVOLGIMENTO

File main.c

#include <stdio.h>

#include <stdlib.h>

#include "datiglobali.h"

#include "funzioni.h"

int main()

{ FILE* puntatore;

int j=1; //Variabile usata per la selezione del menù

if ((puntatore=fopen("ElencoTreni.txt", "r"))==NULL) //Scrittura di controllo del file; se non è possibile aprire il

file, il programma da in output un errore

{ printf("Errore nell'apertura del file.\n");

system("pause");

}

else

{ while ((j>=1) && (j<=3))

{ system("cls"); //Pulisce lo schermo

printf("Cosa vuoi fare?\n1)Visualizza il file;\n2)Visualizza determinate

partenze;\n3)Visualizza treni in un dato range di prezzi;\n4)Uscita;\nSelezione: ");

scanf("%d", &j);

if (j==1)

{ system("cls");

rewind(puntatore); //Fa puntare il puntatore alla prima riga o primo

record del File o Array a cui punta visualizza(puntatore);

system("pause"); //Mette in pausa il programma . Serve per far

leggere i vari dati e poi continuare quando si vuole

}

else

{ if (j==2)

{ system("cls");

rewind(puntatore);

input();

mostraPartenze(puntatore, citta);

system("pause");

}

else

{ if (j==3)

{ system("cls");

rewind(puntatore);

mostraPrezzo(puntatore,

inserimento_massimo(),inserimento_minimo()); system("pause");

}

else

{ if ((j<=0) || (j>=5))

{ printf("Errore. Puoi inserire solo 1, 2, 3 o 4.\n");

j=1; //Perchè se è un valore diverso da 1 ,2 e 3 , il

programma esce system("pause");

}

}

}

}

}

fclose(puntatore);

}

return 0;

}

File datiglobali.h

typedef struct Treni

{ char Codice[6];

char Partenza[20];

char OraP[6];

char Arrivo[20];

char OraA[6];

float Prezzo;

}Treni; //Definisce il tipo Treni da applicare a Treno

Treni Treno;

char citta[20];

File funzioni.c

#include <stdio.h>

#include "datiglobali.h"

void mostra(Treni treno1)

{ printf("%s %s %s %s %s %.2f\n", treno1.Codice, treno1.Partenza, treno1.OraP, treno1.Arrivo, treno1.OraA,

treno1.Prezzo);

return;

}

void input()

{ printf("Inserisci la città di partenza : ");

scanf("%s", &citta);

printf("\n");

return;

}

float inserimento_minimo()

{ float minimo;

printf("Inserisci il minimo: ");

scanf("%f", &minimo);

printf("\n");

return minimo;

}

float inserimento_massimo()

{ float massimo;

printf("Inserisci il massimo: ");

scanf("%f", &massimo);

printf("\n");

return massimo;

}

void visualizza(FILE* alfa)

{ fscanf(alfa, "%s%s%s%s%s%f\n", &Treno.Codice, &Treno.Partenza, &Treno.OraP, &Treno.Arrivo,

&Treno.OraA, &Treno.Prezzo);

while (!feof(alfa))

{ mostra(Treno);

fscanf(alfa, "%s%s%s%s%s%f\n", &Treno.Codice, &Treno.Partenza, &Treno.OraP, &Treno.Arrivo,

&Treno.OraA, &Treno.Prezzo);

}

return;

}

void mostraPartenze(FILE* alfa, char partenza[])

{ int i=0;

fscanf(alfa, "%s%s%s%s%s%f\n", &Treno.Codice, &Treno.Partenza, &Treno.OraP, &Treno.Arrivo,

&Treno.OraA, &Treno.Prezzo);

while(!feof(alfa))

{ if (strcmp(Treno.Partenza, partenza)==0)

{ i=1;

mostra(Treno);

}

fscanf(alfa, "%s%s%s%s%s%f\n", &Treno.Codice, &Treno.Partenza, &Treno.OraP,

&Treno.Arrivo, &Treno.OraA, &Treno.Prezzo);

}

if (i==0)

{ printf("Non ci sono treni in partenza da quella città.\n");

}

return;

}

void mostraPrezzo(FILE* alfa, float massimo, float minimo)

{ int i=0;

fscanf(alfa, "%s%s%s%s%s%f\n", &Treno.Codice, &Treno.Partenza, &Treno.OraP, &Treno.Arrivo,

&Treno.OraA, &Treno.Prezzo);

while(!feof(alfa))

{ if ((Treno.Prezzo>=minimo) && (Treno.Prezzo<=massimo))

{ i=1;

mostra(Treno);

}

fscanf(alfa, "%s%s%s%s%s%f\n", &Treno.Codice, &Treno.Partenza, &Treno.OraP,

&Treno.Arrivo, &Treno.OraA, &Treno.Prezzo);

}

if (i==0)

{ printf("Non ci sono treni con un prezzo in quel range.\n");

}

Dettagli
A.A. 2015-2016
4 pagine
4 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher l'universitarioall'angolo di informazioni apprese con la frequenza delle lezioni di Programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bari o del prof Abbattista Fabio.