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

    [pascal] aiuto su un programma

    perche il valore di n e m immessi dall'utente nella prima procedure non riescono a passare nella 2 procedura

    codice:
    program elezioni;
    
    type
    tabella= ARRAY [1..80, 1..90] OF integer;
    var
    sezione:tabella;
    n:integer;
    m:integer;
    y:integer;
    i:integer;
    
    Procedure inizia (n,m:integer);
    const
    maxcolonne=20;
    maxrighe=20;
    begin
     repeat
     Writeln ('inserisci il numero dei candidati');
     Readln (n);
     until (n<=maxcolonne) and (n>=1);
     repeat
     Writeln ('Inserisci il nimero delle sezioni');
     readln (m);
     Until (m<=maxrighe) and (m>=1);
     writeln (n,m);
     end;
    
    
     procedure leggi (i,y,n,m:integer);
      begin
     For i:=1 to n do
     for y:=1 to m do begin
     writeln ('Inserisci i voti del candidato ', i,' della n. ',y);
     readln (sezione [i,y]);
     end;
     end;
    
    begin
    inizia (n,m);
    leggi(i,y,n,m);
    end.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Ho corretto di nuovo il titolo della discussione.
    Cerca di usare titoli meno generici.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    grazie

  4. #4
    Esistono vari tipi di variabili, quelle globali e quelle locali.

    Ridefinendo anche nella procedura "inizia" le variabili m ed n , queste vengono ad assumere valori solo in quella variabile e non vengono portati all'esterno.

    prova a fare così:

    cambia da :
    Procedure inizia (n,m:integer);
    a :
    Procedure inizia;

    cambia da :
    inizia (n,m);
    a :
    inizia;

    In questo modo non ridefinisci le variabili locali, in modo che vengono assunte come variabili globali (in quanto dichiarate sotto program elezioni

    Prova così

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    C'è poi da fare tutto un discorso sul tipo di passaggio parametri a procedure...

    Esistono due tipi di passaggio in Pascal: passaggio per valore e passaggio per indirizzo.

    Con il primo, alla procedura vengono passati solamente i valori delle variabili (viene effettuata una copia dei valori passati, nelle variabili della procedura), mentre con il secondo vengono passati gli indirizzi delle variabili.

    Con il primo tipo di passaggio si intende fornire alla procedura dei dati con cui poter lavorare, mentre con il secondo si intende fornire alla procedura i dati su cui lavorare.

    La differenza consiste nel fatto che con il primo tipo di passaggio, qualsiasi modifica venga fatta ai dati dalla procedura non verrà vista al ritorno, mentre con il secondo tipo di passaggio, tutte le modifiche apportate ai dati verranno mantenute al ritorno.

    Grossomodo direi che come spiegazione rapida dovremmo esserci...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.