Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [pascal] aiuto alla risoluzione di un problema

    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.
    Program giacenza;
    type
    codprodotto=1..9999;
    Prodotti =RECORD
    prodotto:string;
    codice:codprodotto;
    prezzo:real;
    Giacenza:integer;
    END;

    Var
    prodottorodotti;
    I:Integer; (*contatore*)

    PROCEDURE leggidati (var prodottorodotti; 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; prodottorodotti);
    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.

    [/COdE]

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    88
    Ecco trovato l'errore...

    Quando hai cretato le procedure, gli hai inserito, vado a spiegarmi meglio:
    PROCEDURE leggidati (var prodottorodotti; i:integer) <---
    PROCEDURE aggiorna (var i:integer; prodottorodotti) <---

    quelli in rosso.
    Quando hai fatto la chiamata nel main di queste due procedure, tu non gli hai inserito nessun argomento:
    leggidati;
    aggiorna;

    e qui ti da l'errore, perchè praticamente ti dice che sulle procedure hai passato degli argomenti, e mentre sul main non gli passi nessun argomento e quindi ti dice che ci sono troppi argomenti per queste due procedure... non so se mi hai capito....

    Cmq un altro consigli che ti darei è quello di fare un controllo se il file del testo sia pieno o no se al limite devi inserire dei nuovi nuovi record.

    Se hai problemi contattami pure, ti saprò dare aiuti quando ho tempo libero e spero al più presto

  3. #3
    Utente di HTML.it L'avatar di gokan
    Registrato dal
    Feb 2003
    Messaggi
    262
    usate stò benedetto quando postate il codice :rollo:

  4. #4
    Scusami ma non ho capito potresti farmi un esempio pratico

  5. #5
    Dovrei scrivere in questo modo

    codice:
    leggidati(var prodotto:prodotti; i:integer);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.