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

/*
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



Copyright © 2004-2024 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci