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

    [pascal] trovatemi l'errore

    Perche quando mando in esecuzione questo programma la finestra si chiude subito. Dove ho sbagliato.
    Il programma dovrebbe leggere da un file di testo (magazzino.txt) le informazioni scritte in questo modo
    lava detersivo
    8332 10,23 88
    sapone liquido
    2343 3,12 20
    poi devo effetture la ricerca del codice e sottrarre dalla giacenza -1 e devoi sommare il prezzo alla variabile spesa

    Program giacenza;
    type
    codprodotto=1..9999;
    Prodotti =RECORD
    prodotto:string[10];
    codice:codprodotto;
    prezzo:real;
    Giacenza:integer;
    END;

    Var
    prodottorodotti;
    I:Integer;
    txtmagazzino:text;
    codice:codprodotto ;
    trovato:boolean;
    n:integer;
    spesa:real;
    Begin
    Assign (txtmagazzino,'c:\magazzino.txt');
    Reset (txtmagazzino);
    I:=1;
    while not eof(txtmagazzino) do
    begin
    readln(txtmagazzino, prodotto.prodotto, prodotto.codice, prodotto.prezzo, prodotto.giacenza);
    I:=I+1;
    end;
    close(txtmagazzino);

    N:=I;
    writeln ('Inserisci il numero del prodotto acquistato?');
    Readln (codice);
    i:=1;
    trovato:=FALSE;
    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;
    if (codice<>prodotto.codice) then
    i:=i+1;
    end;
    Writeln ('La spesa totale è di euro' ,spesa);
    readln;
    end.

  2. #2

  3. #3
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    metti il codice tra [*CODE] e [*/CODE] senza asterischi senò nessuno vuole leggere il codice.

    Hai confuso un po' di cose...

    Intanto dopo ASSIGN ci puoi mettere due cose:

    Rewrite(file_di_tipo_testo); <==Crea il file, se esiste già lo sostituisce con uno vuoto ovviamente

    Reset(file_di_tipo_testo); <==Resetta la posizione del "cursore" cioà punta sul primo char dalla prima stringa!

    readln(txtmagazzino, prodotto.prodotto, prodotto.codice, prodotto.prezzo, prodotto.giacenza);

    è sbagliato!

    se vuoi prendere una riga intera dal file e metterlo in una stringa che puoi manipolare all'interno del programma devi scrivere:
    codice:
    TYPE generico = RECORD
                    appoggio : string[30];
                    END;
         classe=ARRAY[1..N] OF GENERICO;
    VAR  conf : TEXT;
         c : CLASSE;
    ...
    ASSIGN(file_di_tipo_testo,'c:\nome_file.ext');
    RESET (file_di_tipo_testo);
    ReadLn(file_di_tipo_testo,c[1].appoggio); 
    CLOSE (file_di_tipo_testo);
    ...
    {ora se vuoi manipolare la prima riga devi fare così}
    stringa:=c[1].appoggio;
    {ora che la prima riga è salvata in una stringa puoi fare quello che vuoi!!!}
    ....
    {se vuoi rimettere la stringa modificata nella prima riga del file c:\nome_file.ext ==>}
    WriteLn(file_di_tipo_testo,stringa);
    Se vuoi te lo scrivo anche in arabo antico

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 © 2024 vBulletin Solutions, Inc. All rights reserved.