logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » terza superiore » linguaggio c

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

001/*
002CLAUDIO CARDINALE III AI
003Per 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).
004Realizzare un'applicazione in grado di:
0051) visualizzare la capienza totale dell'albergo (quante persone in tutto puo' ospitare) e quante persone sono ospitate nell'albergo;
0062) 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;
0073) visualizzare il numero di camere da 1, da 2, da 3 e da 4 posti letto (sugg: utilizzare l'array NUMCAMERE di 4 componenti);
0084) 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
009*/
010#include<stdio.h>
011#define MAX 1000
012int main(){
013     
014    //dichiarazioni
015     
016    int r,i,camere[MAX],posti[MAX],libero[MAX],capienza=0,p_ospitate=0,camera, numcamere[]={0,0,0,0},persone,prenotazione=0;
017     
018     
019    //acquisizione dati
020     
021    //lunghezza vettori
022    do{
023        printf("inserire il numero di camere : ");
024        scanf("%d",&r);
025    }while(r < 1 || r >= MAX);
026     
027    //acquisizione dati
028     
029    //camere
030     
031    for(i=0;i<r;i++){
032        printf("inserisci il numero identificativo della camera numero %d : ",i+1);
033        scanf("%d",&camere[i]);
034    }
035     
036    //posti
037     
038    for(i=0;i<r;i++){
039        printf("inserisci il numero di posti(da 1 a 4) della camera %d : ",camere[i]);
040        scanf("%d",&posti[i]);
041    }
042     
043    //libero
044     
045    for(i=0;i<r;i++){
046        printf("indica se la camera %d e` occupata(1) o libera(0) : ",camere[i]);
047        scanf("%d",&libero[i]);
048    }
049     
050     
051    //calcoli e visualizzazione risultati
052     
053    //1°
054     
055    //capienza
056     
057    for(i=0;i<r;i++)
058        capienza += posti[i];
059     
060    //persone ospitate
061     
062    for(i=0;i<r;i++)
063        if(libero[i])
064            p_ospitate += posti[i];
065     
066    printf("l'albergo puo` ospitare : %d persone, ma e` occupato da sole %d persone\n",capienza,p_ospitate);
067     
068    //2°
069     
070    printf("inserire un numero identificativo di una camera : ");
071    scanf("%d",&camera);
072     
073    i=0;
074    while(i<r && camere[i]!=camera)
075        i++;
076     
077    if(camere[i]==camera)
078        if(libero[i])
079            printf("la camera scelta e` occupata\n");
080        else
081            printf("la camera scelta non e` occupata\n");
082    else
083        printf("ERRORE : la camera scelta non esisste\n");
084     
085    //3°
086     
087    for(i=0;i<r;i++)
088        switch(posti[i]){
089            case 1:
090                numcamere[0]++;
091                break;
092            case 2:
093                numcamere[1]++;
094                break;
095            case 3:
096                numcamere[2]++;
097                break;
098            case 4:
099                numcamere[3]++;
100        }
101     
102    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]);
103     
104    //4°
105     
106    printf("inserire il numero di persone : ");
107    scanf("%d",&persone);
108     
109    i=0;
110    while(i<r && (posti[i]!=persone || libero[i]))
111        i++;
112     
113    if(posti[i]==persone && !libero[i]){
114        libero[i] = 1;
115        prenotazione = 1;
116    }
117     
118    if(prenotazione)
119        printf("camera prenotata\n");
120    else
121        printf("non ci sono camere da %d persone disponibili\n",persone);
122}

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



Copyright © 2004-2025 thecsea.it (Claudio Cardinale - cardi@thecsea.it)! Tutti i diritti riservati. - contattaci