Non è proprio come quello che serve a te..........ma se ci lavori sopra a questo che ti ho mandato, devi solo modificare 1 po' in base a quello che ti chiede il problema........
COMUNQUE, SOLITAMENTE PRIMA SI POSTA IL PROPRIO CODICE, POI SI CHIEDE AIUTO PER MIGLIORARLO, PERFEZIONARLO, CERCARE ERRORI, ETC, ETC
#include <stdio.h>
#include <string.h>
/* dim dell'array dei voli giornalieri */
#define MAXVOLI 5
struct ora {
int ore;
int minuti;
};
typedef struct ora Ora;
struct volo {
char *numvolo;
Ora orario;
int numposti;
char *destinazione;
};
typedef struct volo Volo;
struct voli {
int numvoli;
Volo vettorevoli[MAXVOLI];
};
typedef struct voli Voli;
void CambiaOrario(Volo vettorevoli[], const char *numerovolo, Ora nuovaora);
void AggiornaPosti(Volo vettorevoli[], const char *numerovolo,
int postiprenotati);
void StampaVoli(Volo vettorevoli[]);
int main(void)
{
Volo voligiornalieri[MAXVOLI] = {
"AZ001", 8, 10, 70, "Bologna",
"AZ002", 9, 20, 71, "Palermo",
"AZ003", 10, 30, 73, "Milano",
"AZ004", 11, 40, 74, "Torino",
"AZ005", 12, 50, 75, "Bari"
};
char nvolo[10], carattere;
Ora nuovorario;
int nposti;
do {
printf("\n\nIntroduci opzione:\n");
printf(" A ... Cambia orario\n");
printf(" B ... Aggiorna posti\n");
printf(" C ... Stampa voli\n");
printf(" F ... Fine:\n");
carattere = getchar();
getchar();
switch (carattere) {
case 'a': case 'A':
printf("\n\tIntroduci il numero del volo da modificare: ");
scanf("%10s", nvolo);
printf("\tIntroduci nuovo orario: ");
scanf("%d%d", &nuovorario.ore, &nuovorario.minuti);
getchar();
CambiaOrario(voligiornalieri, nvolo, nuovorario);
break;
case 'b': case 'B':
printf("\n\t%s", "Introduci il numero del volo da modificare: ");
scanf("%10s", nvolo);
printf("\t%s", "Introduci posti prenotati: ");
scanf("%d", &nposti );
getchar();
AggiornaPosti(voligiornalieri, nvolo, nposti);
break;
case 'c': case 'C':
StampaVoli(voligiornalieri);
break;
case 'f': case 'F':
break;
default:
printf("%s", "Carattere errato");
break;
}
} while (carattere!='f'&&carattere!='F');
return 0;
}
void CambiaOrario(Volo vettorevoli[], const char *numerovolo, Ora nuovaora)
{
int i = 0;
int trovato = 0; /* inizializzazione della var booleana trovato a false */
while ((i < MAXVOLI) && (!trovato)){
if (strcmp(numerovolo, vettorevoli.numvolo) == 0)
trovato = 1;
i++;
}
if (!trovato)
printf("\t%s", "Volo non trovato");
else {
i--;
vettorevoli.orario.ore = nuovaora.ore;
vettorevoli.orario.minuti = nuovaora.minuti;
printf("\tModificato l'orario del volo %s\n", numerovolo);
}
}
void AggiornaPosti(Volo vettorevoli[], const char *numerovolo,
int postiprenotati)
{
int i = 0;
int trovato = 0; /* inizializzazione della var booleana trovato a false */
while ((i < MAXVOLI) && (!trovato)){
if (strcmp(numerovolo, vettorevoli.numvolo) == 0)
trovato = 1;
else
i++;
}
if (!trovato)
printf("\t%s", "Volo non trovato");
else {
if (vettorevoli.numposti >= postiprenotati) {
vettorevoli.numposti -= postiprenotati;
printf("\tAggiornamento per il volo %s: posti disponibili %d\n",
numerovolo, vettorevoli.numposti);
} else {
printf("\tAggiornamento per il volo %s NON effettuato\n", numerovolo);
printf("\t\tposti disponibili %d\n", vettorevoli.numposti);
}
}
}
void StampaVoli(Volo vettorevoli[MAXVOLI])
{
int k;
printf("\nPARTENZE VOLI GIORNALIERI\n"
"%3s %6s %12s %10s %12s\n", "", "n.volo", "destinazione", "partenza",
"posti liberi");
for (k = 0; k < MAXVOLI; k++)
printf("%3d %6s %12s %7d:%2d %12d\n",
k,
vettorevoli[k].numvolo,
vettorevoli[k].destinazione,
vettorevoli[k].orario.ore,
vettorevoli[k].orario.minuti,
vettorevoli[k].numposti);
}