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

Data una matrice riportante le relazioni tra alberghi e servizi offerti (con una X all'incrocio tra la riga dell'albergo e la colonna del servizio se l'albergo offre tale servizio) e due vettori con le descrizioni degli alberghi e dei servizi, scrivere un programma che, tramite menu, permetta di stampare:
1) l'elenco di tutti gli alberghi che offrono n determinato servizio inserito da input (controllare l'esistenza del servizio);
2) l'elenco di tutti i servizi e per ognuno di essi l'elenco degli alberghi che lo offrono;
3) l'elenco di tutti i servizi offerti da un albergo richiesto da input (controllare l'esistenza dell'albergo)
4) il mome dell'albergo che offre il maggior numero di servizi

mostra soluzione

001/*
002CLAUDIO CARDINALE III AI
003Data una matrice riportante le relazioni tra alberghi e servizi offerti (con una X all'incrocio tra la riga dell'albergo e la colonna del servizio se l'albergo offre tale servizio) e due vettori con le descrizioni degli alberghi e dei servizi, scrivere un programma che, tramite menu, permetta di stampare:
0041) l'elenco di tutti gli alberghi che offrono n determinato servizio inserito da input (controllare l'esistenza del servizio);
0052) l'elenco di tutti i servizi e per ognuno di essi l'elenco degli alberghi che lo offrono;
0063) l'elenco di tutti i servizi offerti da un albergo richiesto da input (controllare l'esistenza dell'albergo)
0074) il mome dell'albergo che offre il maggior numero di servizi
008*/
009#include<stdio.h>
010#define MAX 1000
011int main(){
012     
013    //dichiarazioni
014     
015    char mat[MAX][MAX],alberghi[MAX],servizi[MAX],servizio,albergo;
016    int r,c,j,i,scelta,mag=0,pos_mag=0,somma=0;
017     
018     
019    //acquisizione dati
020     
021    //lunghezza matrice
022    do{
023        printf("inserire il numero degli alberghi : ");
024        scanf("%d",&r);
025        printf("inserire li numero dei servizi : ");
026        scanf("%d",&c);
027    }while(r<1 || r>=MAX || c<1 || c>=MAX);
028     
029         
030    //acquisizione dati
031     
032    for(i=0;i<r;i++){
033        printf("inserire la descrizione dell'albergo numero %d : ",i+1);
034        getchar();
035        scanf("%c",&alberghi[i]);
036    }
037     
038    for(i=0;i<c;i++){
039        printf("inserire la descrizione del servizio numero %d : ",i+1);
040        getchar();
041        scanf("%c",&servizi[i]);
042    }
043     
044    for(i=0;i<r;i++)
045        for(j=0;j<c;j++){
046            printf("inserire X se e` presente il servizio %c nell'albergo %c : ",servizi[j],alberghi[i]);
047            getchar();
048            scanf("%c",&mat[i][j]);
049        }
050     
051    do{
052        printf("1) elenco degli alberghi che offrono un determinato servizio\n2) l'elenco di tutti i servizi e degli alberghi che li offrono\n3) l'elenco dei servizi offeri da un determinato albergo\n4) il nome dell'albergho che offre il maggior numeor di servizi\nscelta : ");
053        getchar();
054        scanf("%d",&scelta);
055    }while(scelta < 1 || scelta > 4);
056     
057    //calcoli e visualizzazione risultati
058     
059    switch(scelta){
060        case 1:
061            //acqusizione dati
062            printf("inserire un servizio : ");
063            getchar();
064            scanf("%c",&servizio);
065             
066            //calcoli e risultati
067            j=0;
068            while(servizi[j] != servizio && j<c)
069                j++;
070            if(servizi[j] == servizio){
071                printf("il servizio %c è offerto da : ",servizio);
072                for(i=0;i<r;i++)
073                    if(mat[i][j] == 'X')
074                        printf("%c, ",alberghi[i]);
075                printf("\b\b\n");
076            }else
077                printf("il servizio scelto non e` presente\n");
078            break;
079        case 2:
080            //calcoli e risultati
081            for(j=0;j<c;j++){
082                printf("gli alberghi che offrono il servizio %c sono : ",servizi[j]);
083                for(i=0;i<r;i++)
084                    if(mat[i][j] == 'X')
085                        printf("%c, ",alberghi[i]);
086                printf("\b\b\n");
087                }
088            break;
089        case 3:
090            //acquisizione dati
091            printf("inserire un albergo : ");
092            getchar();
093            scanf("%c",&albergo);
094             
095            //calcoli e risultati
096            i=0;
097            while(alberghi[i] != albergo && i<r)
098                i++;
099            if(alberghi[i] == albergo){
100                printf("l'albergo %c offre i seguenti servizi : ",albergo);
101                for(j=0;j<c;j++)
102                    if(mat[i][j] == 'X')
103                        printf("%c, ",servizi[j]);
104                printf("\b\b\n");
105            }else
106                printf("l'albergo scelto non e` presente\n");
107            break;
108        case 4:
109            //calcoli
110            for(i=0;i<r;i++){
111                somma = 0;
112                for(j=0;j<c;j++)
113                    if(mat[i][j] == 'X')
114                        somma += mat[i][j];
115                if(somma > mag){
116                    mag = somma;
117                    pos_mag = i;
118                }
119            }
120                         
121            //visualizzazione risultati
122            printf("l'abergo che offre piu` servizi e` : %c\n",alberghi[pos_mag]);
123    }
124}

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