Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Programmazione
 Esercizio in pascal

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

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


Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,11 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000