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.
;