|
Re: Chi Mi Aiuta Con Questi Test???
------------------------secondo test----------------------------------
Test di “Concetti di programmazione strutturata”
Problema su "concetti di programmazione strutturata" (P2)
Nel seguito descriviamo un problema da risolvere. Per tale problema è fornita una soluzione, in termini di un algoritmo espresso mediante pseudocodice.
Abbiamo però omesso una parte (sottoblocco?) dell'algoritmo, lasciandola indicata con "???". Anche per questa parte forniamo una specifica algoritmica, indicante tutti i passi da eseguire. I vari passi sono dati in modo disordinato.
Il candidato dovrebbe riordinare i passi dell'algoritmo "???". Per ricostruire l'ordine giusto, assegnare ad ogni passo un numero progressivo (1 = primo passo). Assegnare 0 (zero) agli eventuali passi che non debbano rientrare nell'algoritmo.
“Il programma gestisce la tabella dei voli odierni in un aereoporto. La tabella viene scaricata giornalmente da un file di dati sui voli. Ogni volo è memorizzato indicando il suo CODICE (una stringa di 5 caratteri), l'ORA di partenza (indicante ora e minuto) e il numero di POSTI ancora liberi sul volo. Uno degli scopi del programma (quello che qui ci interessa) è, data la tabella dei voli, il codice COD di un volo e un intero K, occupare K posti nel volo COD. Di questa operazione particolare si occupa il sottoblocco "???" da riordinare.”
Ecco l'algoritmo generale:
1. definire il tipo ORA, come record contenente i campi interi: oo, mm (ora e minuto);
2. definire il tipo VOLO, come record contenete i campi: codice (stringa di 5 caratteri), oraPartenza (di tipo ORA), postiLiberi (intero);
3. definire il tipo TABELLAVOLI, come array di record VOLO. Supponiamo che l'array sia di dimensioni NMAX e che nel file di dati sui voli ci siano al massimo NMAX voli;
4. definire le variabili globali
4.1. Tab, di tipo TABELLAVOLI;
4.2. Num, il numero di voli contenuti nella tabella;
4.3. Cod, il codice di un volo da gestire;
4.4. Trovato, una variabile logica (booleana);
4.5. i, un contatore intero;
4.6. Kappa, il numero di cui andranno diminuiti i posti liberi di un certo volo;
5. Scaricare dal file i dati sui voli, memorizzandoli nella tabella Tab e assegnando a Num il numero di voli memorizzati in Tab;
6. Gestione dei dati in Tab (omettiamo i particolari non importanti ai fini della soluzione dell'esercizio) …
6.1. …
6.2. modificare il numero di posti disponibili in un volo,
6.2.1. Richiedere in input il codice del volo in cui si devono occupare dei posti (l'input viene ricevuto in Cod);
6.2.2. Richiedere in input il numero di posti da occupare nel volo Cod (l'input viene ricevuto in Kappa);
6.2.3. "???"
6.3. …
7. Operazioni di terminazione del programma
Ed ecco lo pseudocodice che dovrebbe risolvere "???", da riordinare
a. se Trovato è TRUE
b. mentre (i<=Num) and (Trovato=FALSE)
c. se il campo postiLiberi del volo Tab[i] è >= Kappa diminuiscilo di Kappa
d. diminuisci di Kappa il campo postiLiberi del volo Tab[i]
e. inizializzare Trovato =FALSE
f. se il campo Codice del volo Tab[i] è uguale a Cod, allora assegna Trovato=TRUE
g. se il campo Codice del volo Tab[i] è uguale a Cod, allora assegna Trovato=FALSE
h. genera un messaggio di errore ("volo non trovato") e termina
i. incrementa i di 1
j. altrimenti incrementa i di 1
k. inizializza i=0
l. se Trovato è FALSE
m. inizializzare i=1
n. mentre (i<Num) or (Trovato=FALSE)
o. altrimenti genera un messaggio di errore ("posti non disponibili")
ecco la soluzione:
1. e
2. m
3. b
4. f
5. j
6. l
7. h
8. c
9. o
0. a
0. d
0. g
0. i
0. k
0. n
Ciauz
__________________
<SetiEmperor>
|