Ho suddiviso il programma in procedure ma al momento di leggerle mi da l seguente errore 'too few arguments to function 'leggidati' e 'aggiorna'. come mai.
codice:Program giacenza; type codprodotto=1..9999; Prodotti =RECORD prodotto:string; codice:codprodotto; prezzo:real; Giacenza:integer; END; Var prodotto:prodotti; I:Integer; (*contatore*) PROCEDURE leggidati (var prodotto:prodotti; i:integer); (*procedura per leggere i dati*) VAR txtmagazzino:text; BEGIN Assign (txtmagazzino,'c:\magazzino.txt'); (*file di testo da cui legge i dati*) Reset (txtmagazzino); (*posizionamento al prima riga*) I:=1; while not eof(txtmagazzino) do (*lettura dei dati e posizionamento nel record*) begin readln(txtmagazzino, prodotto.prodotto, prodotto.codice, prodotto.prezzo, prodotto.giacenza); I:=I+1; end; close(txtmagazzino); (*chiusura del file di testo*) end; (*fine procedure leggi*) PROCEDURE aggiorna (var i:integer; prodotto:prodotti); VAR trovato:boolean; n:integer; spesa:real; codice:codprodotto; Begin N:=I; (*poniamo n uguale a i*) writeln ('Inserisci il numero del prodotto acquistato?o digita 0 per uscire'); Readln (codice); repeat If Not(codice=0) then begin (*se il codice=0 allora esce dal programma*) i:=1; (*assegnamo i=1 e trovato =false*) trovato:=FALSE; (*se troviamo il codice allora sottraiamo -1 alla giacenza e sommiamo il prezzo alla spesa*) While Not (trovato=false) and (i<=N) do if codice=prodotto.codice then begin trovato:=true; prodotto.giacenza:=prodotto.giacenza+1; spesa:=spesa+ prodotto.prezzo; end else begin i:=i+1; end; (*se il codice non è esatto visualizziamo sullo schermo un messaggio d'errore*) if trovato=false then writeln ('Codice non trovato'); writeln; end else until codice=0; end; (*procedure*) BEGIN leggidati; aggiorna; end. ;

Rispondi quotando
:rollo:
