Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [pascal]PROCEDURE

  1. #1

    [pascal]PROCEDURE

    Non so come devo scrivere le procedure nel corpo del programma
    mi potete aiutare. Risolvetemi questo programma
    codice:
    Program risuelettorali;
    Type
    tabella= ARRAY [1..80, 1..90] OF integer;
    Var
    sezione:tabella;
    i:integer;
    y:integer;
    totale1:integer;
    n:integer;
    m:integer;
    
    PROCEDURE   inizia (m:integer; n:integer; sezione:tabella; y:integer; i:integer);
    BEGIN
    Writeln ('Inserisci il numero delle candidati');
    Readln (n);
    Writeln ('Inserisci il numero dei sezioni');
    Readln (m);
    For Y:=1 to n do
    begin
    for i:=1 to m do
    begin
    sezione[i,y]:=0;
    end;
    end;
    END;
    
    PROCEDURE  Leggi (y:integer; i:integer; n:integer; m:integer; sezione:tabella; totale1:integer);
    BEGIN
    For Y:=1 to n do
    Begin
    for i:=1 to m do
    begin
    Writeln ('Inserisci i voti della sezione n. ', i, 'del candidato n. ', y);
    readln (sezione[i,y]);
    totale1:=(totale1+sezione[i,y]);
    end;
    end;
    END;
    
    PROCEDURE  Scrivi (y:integer; i:integer; n:integer; m:integer; sezione:tabella);
    BEGIN
    write ('Sez');
    for Y:=1 to n do
    begin
    write (' Cand':7, y);
    end;
    writeln;
     For i:=1 to m do
    begin
         write (i);
    for y:=1 to n do
    begin
    Write (sezione [i,y]:8);
    end;
    writeln;
    end;
    END;
    
    PROCEDURE  tot (y:integer;I:integer; m:integer; n:integer; totale1:integer; sezione:tabella);
    Var
    percentuale:real;
    totale:integer;
    BEGIN
    For Y:=1 to n do
    begin
    totale:=0;
    for i:=1 to m do
    begin
    totale:=totale+sezione[i,y];
    end;
    percentuale:= ((totale*100)/totale1);
    writeln;
    writeln ('Il totale del candidato n.',y,' e di ',totale, ' percentale ', percentuale:2:2);
    end;
    END;
    Begin 
    Nel corpo del programma come posso richiamare le procedure   
    
    end.

  2. #2
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Scusa, ma, prima non mettevi i tag CODE e quindi quello che indentavi veniva riallineato adesso che li usi scrivi tutto nella stessa colonna ...

    Sorvolando questo...

    Da che mondo è mondo una procedura NON legge e NON scrive...
    se lo fai non ti da errore ma è una regola non scritta che rispettano tutti i programmatori (come usare I e J per i cicli...)

    Le uniche eccezioni in cui puoi fare una procedura per scrivere è un menù ma in questo caso scrive e basta...la stessa cosa si potrebbe dire per la lettura...ma non un misto...

    Non potresti scrivere cosa richiede l'esercizio perchè può anche darsi che il tuo algoritmo non c'entri con la risoluzione del problema e quindi potrei rischiare di darti un consiglio sbagliato

    oddio, l'ho stracciata un po' ma meglio non correre rischi anche perchè sei autodidatta e se impari qualcosa di sbagliato te lo porti dietro per l'eternità

    cmq per richiamare le procedure si scrive il nome e si passano le variabili.

    In questo caso se vuoi richiamare la procedura inizia gli devi passare 2 interi, un array e altri due interi proprio nell'ordine in cui gli hai dichiarati all'interno della procedura.

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da cso
    Da che mondo è mondo una procedura NON legge e NON scrive...
    se lo fai non ti da errore ma è una regola non scritta che rispettano tutti i programmatori
    E da quand'è che vale sta regola?

    per invocare una procedura devi scriverne il nome, seguito dalla lista dei paramentri attuali racchiusi tra parentesi tonde; comqunue mi pare che nelle tue procedure hai messo dei parametri inutili, come le variabili y ed i di Leggi, che potevano essere dichiarate semplicemente come variabili locali alla procedura: gli argomenti della procedura devono essere quelli che effetivamente servono per trasferire informazioni dal corpo del programma alla procedura stessa.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    Si. ma il compilatore mi da degli errori. Se nel corpo del programma gli metto il nome delle procedure + i parametri attuali e faccio lo stsso per gli altri mi da errore per questo ho chiesto di risolverlo perche voglio capire come funzionano queste cavole di procedure

  5. #5
    In questo modo non mi da nessun errore ma quando mando in esecuzione il programmala finestra si chiude subito. Voglio sapre dove ho sbagliato

    codice:
    Program risuelettorali;
    Type
    tabella= ARRAY [1..80, 1..90] OF integer;
    Var
    sezione:tabella;
    totale:integer;
    totale1:integer;
    percentuale:real;
    n:integer;
    m:integer;
    
    PROCEDURE inizia (m:integer; n:integer; sezione:tabella);
    Var
    y:integer;
    i:integer;
    BEGIN
    Writeln ('Inserisci il numero delle candidati');
    Readln (n);
    Writeln ('Inserisci il numero dei sezioni');
    Readln (m);
     For Y:=1 to n do
       begin
       for i:=1 to m do
         begin
         sezione[i,y]:=0;
        end;
      end;
    END;
    
    PROCEDURE Leggi (n:integer; m:integer; sezione:tabella; totale1:integer);
    Var
    y:integer;
    i:integer;
    BEGIN
    For Y:=1 to n do
      Begin
      for i:=1 to m do
      begin
      Writeln ('Inserisci i voti sezione n.',i,'candidato   n. ', y);
      readln (sezione[i,y]);
      totale1:=(totale1+sezione[i,y]);
      end;
    end;
    END;
    
    PROCEDURE Scrivi (n:integer; m:integer; sezione:tabella);
    Var
    y:integer;
    i:integer;
    BEGIN
    write ('Sez');
     for Y:=1 to n do
     begin
     write (' Cand':7, y);
     end;
    writeln;
     For i:=1 to m do
     begin
         write (i);
     for y:=1 to n do
     begin
    Write (sezione [i,y]:8);
    end;
    writeln;
    end;
    END;
    
    PROCEDURE tot (m:integer; n:integer; totale1:integer; sezione:tabella);
    Var
    percentuale:real;
    totale:integer;
    y:integer;
    i:integer;
    BEGIN
    For Y:=1 to n do
    begin
    totale:=0;
    for i:=1 to m do
    begin
    totale:=totale+sezione[i,y];
    end;
    percentuale:= ((totale*100)/totale1);
    writeln;
    writeln ('Il totale del candidato n.',y,' e di ',totale, ' percentale ', percentuale:2:2);
    end;
    END;
    Begin
    inizia (m,n,sezione);
    Leggi (n,m,sezione,totale1);
    Scrivi (n,m,sezione);
    tot (m,n,totale1,sezione);   
    
    readln;
    
    end.

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Io sono anni che non programmo in pascal...quindi non poso dirti molto...Ma non ce l'hai un manuale sul pascal? Non puoi imparare queste cose chiedendo sul forum...anche perke avuta una risposta te ne servirebero altre 100 su altre cose..quindi ticonsiglio di procurarti una guida e di imparare lì la sintassi e cheidere sul forum solo cio che non capisci.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  7. #7
    si. ma dal libro ci sono troppi formalismi.

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.