| pedrosina Comune mortale
 
  
 
 Registrato: 12/09/08 18:37
 Messaggi: 1
 
 
 | 
			
				|  Inviato: 13 Set 2008 17:16    Oggetto: Aiuto programma C su struct!! |   |  
				| 
 |  
				| Allora, questo è il testo dell'esercizio per un esame di informatica che devo eseguire che devo fare in modo completo oltre alla consegna: (ringrazio in anticipo ki volesse aiutarmi, è per lunedi!!) 
 Si considerino i dati relativi a un insieme di alberghi. Un albergo è rappresentato dalla sua categoria (un intero), dal numero di stanze di cui è composto (max 100) e da un vettore di valori che descrivono ciascuna stanza. Una stanza è rappresentata dal numero di letti, dal piano in cui è ubicata nell'albergo e da un valore booleano che indica se è libera o occupata.
 Scrivere le 2 definizioni di tipo necessarie per rappresentare una stanza e un albergo.
 Scrivere una funzione C che prenda come parametri:
 un vettore di alberghi, la lunghezza del vettore, un intero che rappresenta una categoria desiderata,
 un intero che rappr un piano desiderato e
 un intero che rappr il numero di letti desiderato.
 
 La funzione deve restituire il numero totale di stanze libere tra tutti gli alberghi di categorie uguale o superiore a quella desiderata che siano ubicate esattamente al piano desiderato e che abbiano un numero di letti almeno pari a quello desiderato.
 
 
 Ho provato a risolverlo nel modo seguente ma anche se il compilatore non segnala nessun errore per esempio se inserisco come dati desiderati 1 3 1 mi da come risultato 3 che è sbagliato...avevo anche aggiunto delle printf per controllare ma non le esegue.
 
 
 
  	  | Codice: |  	  | #include <stdio.h> #include <stdlib.h>
 #include <string.h>
 
 #define N_MAX 100
 
 struct Stanze
 {
 int n_letti;
 int piano;
 int libera;
 };
 
 struct Alberghi
 {
 int categoria;
 int num_stanze;
 struct Stanze stanza[N_MAX];
 };
 
 
 int StanzeLibere (struct Alberghi albergo[], int n, int cat_des, int piano_des, int nletti_des);
 int StanzaValida (struct Alberghi albergo, int cat_des, int piano_des, int nletti_des);
 
 
 int main ()
 {
 int categoria_des;
 int piano_des;
 int num_letti_des;
 int stanze_libere;
 
 struct Alberghi albergo[] = { {1, 2, {{2, 3, 1}, {3, 4, 1}}},
 {2, 2, {{3, 2, 0}, {4, 1, 1}}},
 {3, 2, {{4, 3, 1}, {5, 3, 1}}} };
 
 int num = 3;
 
 printf ("inserire categoria, piano e numero di letti desiderati:");
 scanf ("%d%d%d", &categoria_des, &piano_des, &num_letti_des);
 
 stanze_libere = StanzeLibere (albergo, num, categoria_des,              piano_des, num_letti_des);
 
 printf ("%d", stanze_libere);
 
 return EXIT_SUCCESS;
 }
 
 int StanzeLibere (struct Alberghi albergo[], int n, int cat_des, int piano_des, int nletti_des)
 {
 int tot_libere = 0;
 int i, j;
 
 
 for (i = 0; i < n; i++)
 {
 printf ("%d", tot_libere);
 for (j = 0; j < albergo[i].num_stanze; j++)
 {
 printf ("%d", tot_libere);
 if (((albergo[i].stanza[j].libera) == 1) &&
 (StanzaValida(albergo[i], cat_des, piano_des, nletti_des) == 1))
 
 printf ("%d", tot_libere);
 tot_libere++;
 printf ("%d", tot_libere);
 }
 }
 
 return tot_libere;
 }
 
 
 int StanzaValida (struct Alberghi albergo, int cat_des,
 int piano_des, int nletti_des)
 {
 int i;
 
 for (i = 0; i < albergo.num_stanze; i++)
 {
 if ((albergo.categoria >= cat_des) && (albergo.stanza[i].piano ==     piano_des)
 && (albergo.stanza[i].n_letti >= nletti_des))
 
 return 1;
 
 else
 return 0;
 }
 }
 | 
 |  |