Testo dell'esercizio
Per gestire le camere di un albergo si hanno a disposizione gli array CAMERE dove sono contenuti i numeri identificativi delle camere, POSTI dove e' contenuto il numero di posti (da 1 a 4) di ciascuna camera, e LIBERO indica, per ogni camera, se e' libera (=0) oppure occupata (=1).
Realizzare un'applicazione in grado di:
1) visualizzare la capienza totale dell'albergo (quante persone in tutto puo' ospitare) e quante persone sono ospitate nell'albergo;
2) visualizzare se la camera, il cui identificativo e' inserito da input, e' libera o occupata. Se la camera non esiste emettere la segnalazione di errore;
3) visualizzare il numero di camere da 1, da 2, da 3 e da 4 posti letto (sugg: utilizzare l'array NUMCAMERE di 4 componenti);
4) gestire una prenotazione: inserito in input il nuemro X di persone, cercare, se esiste, una camera libera che possa ospitare tutte le persone. Se esiste portare a 1 il relativo elemento dell'array LIBERO per indicare che ora la camera e' occupata, altrimenti dare una segnalazione di avviso
mostra soluzione
/*
CLAUDIO CARDINALE III AI
Per gestire le camere di un albergo si hanno a disposizione gli array CAMERE dove sono contenuti i numeri identificativi delle camere, POSTI dove e' contenuto il numero di posti (da 1 a 4) di ciascuna camera, e LIBERO indica, per ogni camera, se e' libera (=0) oppure occupata (=1).
Realizzare un'applicazione in grado di:
1) visualizzare la capienza totale dell'albergo (quante persone in tutto puo' ospitare) e quante persone sono ospitate nell'albergo;
2) visualizzare se la camera, il cui identificativo e' inserito da input, e' libera o occupata. Se la camera non esiste emettere la segnalazione di errore;
3) visualizzare il numero di camere da 1, da 2, da 3 e da 4 posti letto (sugg: utilizzare l'array NUMCAMERE di 4 componenti);
4) gestire una prenotazione: inserito in input il nuemro X di persone, cercare, se esiste, una camera libera che possa ospitare tutte le persone. Se esiste portare a 1 il relativo elemento dell'array LIBERO per indicare che ora la camera e' occupata, altrimenti dare una segnalazione di avviso
*/
#include<stdio.h>
#define MAX 1000
int main(){
//dichiarazioni
int r,i,camere[MAX],posti[MAX],libero[MAX],capienza=0,p_ospitate=0,camera, numcamere[]={0,0,0,0},persone,prenotazione=0;
//acquisizione dati
//lunghezza vettori
do{
printf("inserire il numero di camere : ");
scanf("%d",&r);
}while(r < 1 || r >= MAX);
//acquisizione dati
//camere
for(i=0;i<r;i++){
printf("inserisci il numero identificativo della camera numero %d : ",i+1);
scanf("%d",&camere[i]);
}
//posti
for(i=0;i<r;i++){
printf("inserisci il numero di posti(da 1 a 4) della camera %d : ",camere[i]);
scanf("%d",&posti[i]);
}
//libero
for(i=0;i<r;i++){
printf("indica se la camera %d e` occupata(1) o libera(0) : ",camere[i]);
scanf("%d",&libero[i]);
}
//calcoli e visualizzazione risultati
//1°
//capienza
for(i=0;i<r;i++)
capienza += posti[i];
//persone ospitate
for(i=0;i<r;i++)
if(libero[i])
p_ospitate += posti[i];
printf("l'albergo puo` ospitare : %d persone, ma e` occupato da sole %d persone\n",capienza,p_ospitate);
//2°
printf("inserire un numero identificativo di una camera : ");
scanf("%d",&camera);
i=0;
while(i<r && camere[i]!=camera)
i++;
if(camere[i]==camera)
if(libero[i])
printf("la camera scelta e` occupata\n");
else
printf("la camera scelta non e` occupata\n");
else
printf("ERRORE : la camera scelta non esisste\n");
//3°
for(i=0;i<r;i++)
switch(posti[i]){
case 1:
numcamere[0]++;
break;
case 2:
numcamere[1]++;
break;
case 3:
numcamere[2]++;
break;
case 4:
numcamere[3]++;
}
printf("ci sono %d camere da 1, %d camere da 2, %d camere da 3, %d camere da 4\n",numcamere[0],numcamere[1],numcamere[2],numcamere[3]);
//4°
printf("inserire il numero di persone : ");
scanf("%d",&persone);
i=0;
while(i<r && (posti[i]!=persone || libero[i]))
i++;
if(posti[i]==persone && !libero[i]){
libero[i] = 1;
prenotazione = 1;
}
if(prenotazione)
printf("camera prenotata\n");
else
printf("non ci sono camere da %d persone disponibili\n",persone);
}
Testi Consigliati:
Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C
torna