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
/*
CLAUDIO CARDINALE III AI
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
*/
#include<stdio.h>
#define MAX 1000
int main(){
//dichiarazioni
char mat[MAX][MAX],alberghi[MAX],servizi[MAX],servizio,albergo;
int r,c,j,i,scelta,mag=0,pos_mag=0,somma=0;
//acquisizione dati
//lunghezza matrice
do{
printf("inserire il numero degli alberghi : ");
scanf("%d",&r);
printf("inserire li numero dei servizi : ");
scanf("%d",&c);
}while(r<1 || r>=MAX || c<1 || c>=MAX);
//acquisizione dati
for(i=0;i<r;i++){
printf("inserire la descrizione dell'albergo numero %d : ",i+1);
getchar();
scanf("%c",&alberghi[i]);
}
for(i=0;i<c;i++){
printf("inserire la descrizione del servizio numero %d : ",i+1);
getchar();
scanf("%c",&servizi[i]);
}
for(i=0;i<r;i++)
for(j=0;j<c;j++){
printf("inserire X se e` presente il servizio %c nell'albergo %c : ",servizi[j],alberghi[i]);
getchar();
scanf("%c",&mat[i][j]);
}
do{
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 : ");
getchar();
scanf("%d",&scelta);
}while(scelta < 1 || scelta > 4);
//calcoli e visualizzazione risultati
switch(scelta){
case 1:
//acqusizione dati
printf("inserire un servizio : ");
getchar();
scanf("%c",&servizio);
//calcoli e risultati
j=0;
while(servizi[j] != servizio && j<c)
j++;
if(servizi[j] == servizio){
printf("il servizio %c è offerto da : ",servizio);
for(i=0;i<r;i++)
if(mat[i][j] == 'X')
printf("%c, ",alberghi[i]);
printf("\b\b\n");
}else
printf("il servizio scelto non e` presente\n");
break;
case 2:
//calcoli e risultati
for(j=0;j<c;j++){
printf("gli alberghi che offrono il servizio %c sono : ",servizi[j]);
for(i=0;i<r;i++)
if(mat[i][j] == 'X')
printf("%c, ",alberghi[i]);
printf("\b\b\n");
}
break;
case 3:
//acquisizione dati
printf("inserire un albergo : ");
getchar();
scanf("%c",&albergo);
//calcoli e risultati
i=0;
while(alberghi[i] != albergo && i<r)
i++;
if(alberghi[i] == albergo){
printf("l'albergo %c offre i seguenti servizi : ",albergo);
for(j=0;j<c;j++)
if(mat[i][j] == 'X')
printf("%c, ",servizi[j]);
printf("\b\b\n");
}else
printf("l'albergo scelto non e` presente\n");
break;
case 4:
//calcoli
for(i=0;i<r;i++){
somma = 0;
for(j=0;j<c;j++)
if(mat[i][j] == 'X')
somma += mat[i][j];
if(somma > mag){
mag = somma;
pos_mag = i;
}
}
//visualizzazione risultati
printf("l'abergo che offre piu` servizi e` : %c\n",alberghi[pos_mag]);
}
}
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