| V I S U A L I Z Z A D I S C U S S I O N E |
| silent |
Inserito il - 25/06/2004 : 17:48:53 Qualcuno potrebbe dare un'occhiata a questo programma:
program rubrica; uses wincrt; const dim = 100; type persona = record cognome : string[20]; nome : string[20]; telefono : string[12]; end; var a:file of persona; p:array [1..dim] of persona; i:integer; procedure inizializza_rubrica; var n:integer; begin clrscr; repeat write ('Quanti nominativi desideri inserire ? '); readln(n); until n >= 1;
rewrite(a); i:=1; repeat write('Inserisci cognome : '); readln(p[i].cognome); write('Inserisci nome : '); readln(p[i].nome); write('Inserisci numero di telefono : '); readln(p[i].telefono);
write(a,p[i]);
i:=i+1; until i > n; close(a); end;
procedure ordina_rubrica; var aux:string; n:integer; scambio:boolean; begin clrscr; reset(a); repeat scambio:=false; for i:=1 to n-1 do if p[i].cognome < p[i+1].cognome then begin aux:=p[i].cognome; p[i].cognome:=p[i+1].cognome; p[i+1].cognome:=aux; scambio:=true; end; until scambio = false; close(a); end;
procedure visualizza_rubrica; begin clrscr; reset(a); writeln; writeln('RUBRICA'); while not (eof(a)) do begin read(a,p[i]); write(p[i].cognome,' ',p[i].nome,' ',p[i].telefono); end; close(a); writeln; write('premere Invio per continuare...'); readln; end;
begin assign(a,'Rubrica.doc'); inizializza_rubrica; ordina_rubrica; visualizza_rubrica; end.
è un file per la gestione di una rubrica,ma ci deve essere un errore nella procedure ordina_rubrica.Mi potreste dire qual è??
|
| 18 U L T I M E R I S P O S T E (in alto le più recenti) |
| Frisketta |
Inserito il - 24/08/2004 : 11:40:18 Qualcuno ha le tracce dell'appello di programmazione dei corsi B e C in data 15/07/04? AIUTATEMI!!!! |
| Nicola |
Inserito il - 14/07/2004 : 17:45:31 Passatooooooooooooooo!!!!!E il laboratorio è fatto! Alla fine, dopo tante storie, non ha messo ne stack ne coda ma x fortuna è andato tutto ok!!! cmq sono del corso A e vorrei naturalmente aggiungere un ringraziamento particolare ad antonio!!!!      |
| Antonio |
Inserito il - 13/07/2004 : 18:31:27 P.S.
Due cose: 1. di che corso sei (mi sembra assurdo chiedere, già a programmazione, di usare strutture di dati astratte)
2. Facci sapere come va!... . |
| Antonio |
Inserito il - 13/07/2004 : 18:29:29 Citazione: Messaggio inserito da Nicola se ti dovesse servire qualcosa non devi fare baltro che chiedere.....
..mi servirebbe una cosuccia: 'na femn!    |
| Nicola |
Inserito il - 13/07/2004 : 18:18:23 Mamma mia Antonio, non so come ringraziarti....se veramente ci sarà una cosa del genere all'esame, e così dovrebbe essere, lo passerò solo grazie a te!!!! non so davvero come ringraziarti..........sei stato davvero grande!!!! tantissime grazie, grazieeeeeeeeeeeeee. se ti dovesse servire qualcosa non devi fare baltro che chiedere..... grazieeeeeeeeeee |
| Antonio |
Inserito il - 13/07/2004 : 18:01:28 Vuoi che lo vado a fare io l'esame domani?? ..scherzo.. :-)
Allegato: queue_completa.txt 2,92 KB |
| Nicola |
Inserito il - 13/07/2004 : 12:28:55 AIUTOOOOOOOOOOOOOOOOOOOOOO, HO BISOGNO DI QUEL MAINNNNNNNNNNNNNNN!!!!!!!!!!! QUANDO NEL MAIN RICHIAMO PROCEDURE E FUNZIONI EVIDENTEMENTE SBAGLIO!!!! COME FACCIO, UFFA!!! COME RICHIAMO NEL MAIN PROCEDURE E FUNZIONI!!!!!!??????? |
| Nicola |
Inserito il - 13/07/2004 : 12:22:36 const max = 5; (* massima dimensione *) empty_el = 9999;
type (* dichiarazione della struttura CODA *) queue = RECORD elements: array[1..max] of integer; inQueue: 1..max; (* punta al primo elemento della coda *) END (* end record *)
(* Funzioni/Procedure di base:
create(queue); full(queue) --> boolean; empty(queue) --> boolean; in(queue, integer); out(stack) --> integer;
*)
(* CREA CODA *****************************************) (* procedura di inizializzazione *) procedure create(Q: queue); begin Q.inQueue := 0; (* stato di coda vuota *) end;
(* CODA PIENA *****************************************) function full(Q: queue): boolean; begin full := (Q.inQueue=max); end;
(* STACK VUOTO *****************************************) function empty(Q: queue): boolean; begin empty := (Q.inQueue=0);
end;
(* INSERIMENTO NELLA CODA *****************************) (* restituisce TRUE se l'elemento è stato inserito *) function in(var Q: queue; x: integer): boolean; begin if(not full(Q)) then begin Q.inQueue := Q.inQueu+1; (* un elemento in più *) Q.elements[Q.inQueue] := x; in := true; end else in := false; end;
(* USCITA DALLA CODA ******************************) function out(var Q: queue): integer; begin if(not empty(Q)) then begin out := Q.elements[1];
(* tutti gli elementi vengono "sciftati" a sinistra di 1 *) for i=2 to Q.inQueue do Q.elements[i-1] := Q.elements[i];
Q.inQueue := Q.inQueu-1; end else out := empty_el; end;
(* FUNZIONE: somma degli elementi della coda; *)
function sum(Q: queue): integer; var tot: integer;
begin tot := 0; while(not empty(Q)) tot := tot + out(Q); sum := tot; end;
GRAZIE AD ANTONIO ORA HO QUESTO PROGRAMMA CHE MI SERVIVA PER LA PREPARAZIONE ALL'ESAME. L'HO PROVATO E NON CI SONO ERRORI.....IL PROBLEMA è CHE QUANDO FACCIO IL MAIN MI DA DEGLI ERRORI MA NON RIESCO A CAPIRE COSA SBAGLIO.......... VI PREGO SE QUALCUNO PUò AIUTARMI.........COME VIENE IL MAIN? HO L'ESAME DOMANI E HO BISOGNO DI CAPIRE QUESTA COSA ENTRO OGGI........VI PREGO AIUTATEMI, QUANDO LO FACCIO IO SBAGLIO QUALCOSA..........AIUTOOOOOOOOOOOOOOO |
| Nicola |
Inserito il - 10/07/2004 : 09:52:41 Grazie Antoniooooooo..... Mi hai aiutato davvero tanto!!!! Grazieeeeeeeeeeee     |
| Antonio |
Inserito il - 08/07/2004 : 20:42:42 ...molto simile allo stack:
Allegato: queue.txt 2,27 KB |
| Nicola |
Inserito il - 08/07/2004 : 17:14:30 Ciao raga, me ne manca solo uno. La traccia del 28 giugno di programmazione. fa così: Problema: implementare una coda utilizzando un array di 5 elementi interi; in particolare realizzare le seguenti funzioni/procedure:
1. inserimento in fondo alla coda (INCODA) ed estrazione dal fondo della coda (OUTCODA), con visualizzazione dell’elemento estratto; 2. funzionalità di “coda piena” e “coda vuota”; 3. somma degli elementi della coda, utilizzando la funzione OUTCODA; 4. creazione di un array di elementi pari e di un array di elementi dispari, utilizzando INCODA e OUTCODA.
Qualcuno la sa fare? magari.....help meeeeeee |
| Nicola |
Inserito il - 30/06/2004 : 11:30:14 Ciao raga.........Qualcuno mi sa dire cosa ha messo Covino per il corso A come traccia di laboratorio di programmazione il 29/06/2004? grazie |
| silent |
Inserito il - 29/06/2004 : 20:26:53 grazie badpenguin |
| Antonio |
Inserito il - 28/06/2004 : 19:41:31 Citazione: Messaggio inserito da Nicola
Raga vi prego risolvetemi almeno un punto di questi quesiti: Problema: Implementare uno stack utilizzando un array di 5 elementi interi; in particolare realizzare le seguenti procedure/funzioni: - Inserimento(push) e estrazione(pop)/visualizzazione di elementi dello stack; - funzionalità di stack pieno, stack vuoto; -somma degli elementi dell'array, utilizzando la funzione pop; -creazione di un array di elementi pari e di un array di elementi dispari, utilizzando push e pop.
Almeno i primi due punti, helpppppppppppp meeeeeeeeeeeee!!!!! non lo so fareeeeeeeeeeee!!!!!!
Ecco quello che chiedevi... Non ricordo tanto bene il pascal ma dovrebbe andar bene; solo non ho capito l'ultimo punto: gli elementi sono in uno stack e se ne devono creare altri due, oppure davvero usare dei vettori??
Allegato: stack.txt 2,21 KB |
| Nicola |
Inserito il - 28/06/2004 : 11:15:43 Raga vi prego risolvetemi almeno un punto di questi quesiti: Problema: Implementare uno stack utilizzando un array di 5 elementi interi; in particolare realizzare le seguenti procedure/funzioni: - Inserimento(push) e estrazione(pop)/visualizzazione di elementi dello stack; - funzionalità di stack pieno, stack vuoto; -somma degli elementi dell'array, utilizzando la funzione pop; -creazione di un array di elementi pari e di un array di elementi dispari, utilizzando push e pop.
Almeno i primi due punti, helpppppppppppp meeeeeeeeeeeee!!!!! non lo so fareeeeeeeeeeee!!!!!! |
| badpenguin |
Inserito il - 27/06/2004 : 14:08:27 Quando effettui lo scambio devi scambiare anche i restanti campi e non solo il campo cognome cioè :
if p[i+1].cognome < p[i].cognome then begin aux:=p[i].cognome; p[i].cognome:=p[i+1].cognome; p[i+1].cognome:=aux; aux:=p[i].nome; p[i].nome:=p[i+1].nome; p[i+1].nome:=aux; aux:=p[i].telefono; p[i].telefono:=p[i+1].telefono; p[i+1].telefono:=aux; end;
|
| silent |
Inserito il - 26/06/2004 : 13:27:58 ma io voglio ordinare la rubrica per cognome,cosa devo modificare ?? |
| badpenguin |
Inserito il - 25/06/2004 : 18:21:25 procedure ordina_rubrica; var aux:string; n:integer; scambio:boolean; begin clrscr; reset(a); repeat scambio:=false; for i:=1 to n-1 do if p[i].cognome < p[i+1].cognome then begin aux:=p[i].cognome; p[i].cognome:=p[i+1].cognome; p[i+1].cognome:=aux; scambio:=true; end; until scambio = false; close(a); end;
La prima cosa che mi salta all'occhio è che durante l'ordinamento scambi soltanto il campo cognome invece dovresti anche scambiare i restanti campi. (nome,telefono) Secondo, la variabile n non viene inizializzata, la definisci soltanto ma non gli assegni un valore. Infine ti consiglio di utilizzare le procedure in maniera piu "parametrica" evitando di usare variabili globali in quel modo. Ciao
|