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;
}
} |
|
|