Newsgroup: it.discussioni.ingegneria
Titolo: Turbo pascal

Alcuni appunti nelle bozze: guardare gi+APk-
Ciao
diego
--
------------------------------------------------------------------
Per risposte togliere NOSPAM dall'indirizzo
For Reply remove NOSPAM from address
------------------------------------------------------------------
Caio De Filippo ha scritto nel messaggio
+ADw-34E0586B.B55AF990+AEA-italymail.com+AD4-...
+AD4-
+AD4-BOZZA listato 1
+AD4-
+AD4-program agenzia (input,output)+ADs-
+AD4-const
+AD4-   listamax+AD0-100+ADs-
+AD4-type
+AD4-   lista+AD0-1..listamax+ADs-
+AD4-   costruzione+AD0-1900..1998+ADs-
+AD4-   appartamenti+AD0-record
+AD4-         libero: array +AFs-lista+AF0- of boolean+ADs-
+AD4-         superficie: array +AFs-lista+AF0- of integer+ADs-
+AD4-         annodicostruzione: array +AFs-lista+AF0- of costruzione+ADs-
+AD4-         quartiere: array +AFs-lista+AF0- of char
+AD4-   end+ADs-
+AD4-var
Secondo me ha pi+APk- senso fare un vettore di record+ADs- ogni record corrisponde
ad un appartamento: sarebbe pi+APk- ordinato. Se lo vuoi tenere in memoria ok ,
altrimenti piazzi tutto in un file ricordandoti che, come hai fatto tu, devi
sempre ricaricare tutto l'elenco di appartamenti ad ogni accensione.
+AD4-   nrecord, pos, i, j : lista+ADs-
+AD4-   sup: integer+ADs-
+AD4-   quart : char+ADs-
+AD4-   archivio :appartamenti+ADs-
Se usi un vettore di record, per la ricerca usi un record uguale a quelli
contenuti nel vettore. Sarebbe pi+APk- ordinato
+AD4-procedure archiviazione ........
+AD4-   ....................
+AD4-procedure introduzione dati di richiesta del cliente acquirente........
+AD4-   .......................
+AD4-procedure ricerca (super: integer+ADs- quartier: char+ADs- var posizione:
+AD4-lista)+ADs-
+AD4-   begin
+AD4-      with archivio do begin
+AD4-          i:+AD0-1+ADs-
cos+AOw- non +AOg- ottimizzato: la ricerca dovresti farla solo tra quelli liberi in
quanto, se ho ben capito gli appartamenti occupati non verranno mai valutati
dal programma.
+AD4-          while (i+ADwAPQ-nrecord) do begin
+AD4-                 if (i+ADwAPQ-nrecord) and (super+AD0-superficie+AFs-i+AF0-) and
+AD4-                    (quartier+AD0-quartiere+AFs-i+AF0-) then begin
+AD4-                          posizione:+AD0-i+ADs-
+AD4-                          libero+AFs-i+AF0-:+AD0-false
+AD4-                 end+ADs-(+ACo-if+ACo-)
+AD4-          end+ADs-(+ACo-while+ACo-)
+AD4-      end+ADs-(+ACo-with+ACo-)
+AD4-   end+ADs-(+ACo-procedure ricerca+ACo-)
+AD4-
+AD4-
+AD4-
+AD4-
+AD4-BOZZA listato 2
+AD4-
+AD4-
+AD4-..............
+AD4-type
+AD4-   appartamenti+AD0-record
+AD4-         libero: boolean+ADs-
+AD4-         superficie: integer+ADs-
+AD4-         annodicostruzione: costruzione+ADs-
+AD4-         quartiere: char
+AD4-   end+ADs-
+AD4-   elenco+AD0-record
+AD4-         ndati: 0..listamax+ADs-
ndati +AOg- inutile
+AD4-         e: array +AFs-1..listamax+AF0- of appartamenti
Cos+AOw- va molto meglio.
Per la ricerca compili un record uguale a appartamenti e lo ricerchi in e
+AD4-   end+ADs-
+AD4-..........................

Ringrazio gli amici anticipatamente che leggeranno e risponderanno al
seguente testo. Inoltre ringrazio ancora di piů chi mi risponde al mio
indirizzo e-mail: 
caio...@italymail.com
Devo risolvere il seguente esercizio:
TRACCIA: Si scriva un sottoprogramma che riceva un elenco di
Appartamenti,
una superficie ed un quartiere e verifichi l'esistenza di un
appartamento
libero con i requisiti richiesti. In caso affermativo, il sottoprogramma
deve modificare l'elenco in modo da occupare il primo appartamento 
trovato.
Il problema, e quindi la richiesta, consiste se la bozza di listato 1 
risolve il quesito esposto nella traccia.
Inoltre integrando la bozza di listato 2 in modo opportuno nella bozza
di listato 1, quale č il migliore dei due listati?
BOZZA listato 1
program agenzia (input,output);
const
   listamax=100;
type
   lista=1..listamax;
   costruzione=1900..1998;
   appartamenti=record
         libero: array [lista] of boolean;
         superficie: array [lista] of integer;
         annodicostruzione: array [lista] of costruzione;
         quartiere: array [lista] of char
   end;
var
   nrecord, pos, i, j : lista;
   sup: integer;
   quart : char;
   archivio :appartamenti;
procedure archiviazione ........
   ....................
procedure introduzione dati di richiesta del cliente acquirente........
   .......................
procedure ricerca (super: integer; quartier: char; var posizione:
lista);
   begin
      with archivio do begin
          i:=1;
          while (i<=nrecord) do begin
                 if (i<=nrecord) and (super=superficie[i]) and
                    (quartier=quartiere[i]) then begin
                          posizione:=i;
                          libero[i]:=false
                 end;(*if*)
          end;(*while*)
      end;(*with*)
   end;(*procedure ricerca*)
 
 
 
BOZZA listato 2
..............
type
   appartamenti=record
         libero: boolean;
         superficie: integer;
         annodicostruzione: costruzione;
         quartiere: char
   end; 
   elenco=record
         ndati: 0..listamax;
         e: array [1..listamax] of appartamenti
   end;
..........................
Grazie.
Caio De Filippo.