|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2003
Città: Napoli prov
Messaggi: 3089
|
[Turbo Pascal] Aiuto su variabile in una procedura
Ciao a tutti!
![]() Visto che domani ho l'esame di programmazione sto facendo qualche esercizio. Eccone uno: "Sia dato un array bidimensionale A di interi di dimensione MxN. In ogni riga della matrice vi sono N-1 elementi >0 ed un solo elemento uguale a 0. Scrivere una procedura che sostituisca in ogni riga il valore 0 con un valore >0 in modo che tutte le righe della matrice abbiano la stessa somma". Il problema è banale e infatti l'ho risolto. Ho solo una difficoltà con una variabile della procedura. Questa è la procedura: PROCEDURE SOMMA (RIGHE, COLONNE: INTEGER; VAR MATRICE: VETTORE); VAR I,J,MASSIMO: INTEGER; SOMME: ARRAY [1..RIGHE] OF INTEGER; BEGIN FOR I:=1 TO 4 DO BEGIN SOMME[i]:=0; END; FOR I:=1 TO RIGHE DO BEGIN FOR J:=1 TO COLONNE DO BEGIN SOMME[i]:=SOMME[i]+MATRICE[I,J]; END; END; MASSIMO:=SOMME[1]; FOR I:=2 TO 4 DO BEGIN IF SOMME[i]>MASSIMO THEN MASSIMO:=SOMME[i]; END; FOR I:=1 TO RIGHE DO BEGIN FOR J:=1 TO COLONNE DO BEGIN IF MATRICE[I,J]=0 THEN MATRICE[I,J]:=MASSIMO-SOMME[i]+1; END; END; END; Questa è la procedure call (dove M=righe, N=colonne, A= matrice) SOMMA (M,N,A); Perchè stando così le cose mi dà errore qui: SOMME: ARRAY [1..RIGHE] OF INTEGER; dicendomi che non può valutare l'espressione [1..righe] se io righe gliele ho passate dal main? Grazie! ![]()
__________________
Thermaltake Armor VA8000SWA**Corsair CMPSU-620HX**Intel Core 2 Quad Q9450 **Asus P5Q Deluxe**Corsair Dominator 2x2GB PC8500 1066Mhz-555 XMS2**Sapphire Vapor-X HD7970 GHz Edition 3GB GDDR5**Samsung SSD 830 256GB**WD Caviar 1TB SATA**Creative X-Fi Elite Pro **Pioneer DVR-215D**Altec Lansing FX6021**Crossover 2720MDP**Logitech diNovo Cordless Desktop**Cooler Master Storm Sentinel Advance on Razer eXactMat |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2003
Città: Napoli prov
Messaggi: 3089
|
Già che ci sono posto anche il main:
![]() PROGRAM SOMMAEMEDIA; CONST M_MAX = 100; N_MAX = 100; TYPE VETTORE= ARRAY [1..M_MAX, 1..N_MAX] OF INTEGER; VAR A: VETTORE; M,N,I,J: INTEGER; BEGIN repeat write('Numero di righe della matrice: '); readln(M); until (M<= M_MAX) and (M>=1); repeat write('Numero colonne della matrice: '); readln(N); until (N<= N_MAX) and (N>=1); writeln; writeln; writeln('INIZIALIZZAZIONE DELLA MATRICE'); writeln; for i:=1 to M do for j:=1 to N do begin write('Inserisci linea ', i, ' colonna ', j, ' val: '); readln(A[i,j]) end; writeln; writeln; writeln('MATRICE A INSERITA'); for i:=1 to M do begin writeln; for j:=1 to N do write(A[i, j]:8); end; SOMMA (M,N,A); writeln; writeln; writeln('MATRICE A TRASFORMATA'); for i:=1 to M do begin writeln; for j:=1 to N do write(A[i, j]:8); end; READLN; END.
__________________
Thermaltake Armor VA8000SWA**Corsair CMPSU-620HX**Intel Core 2 Quad Q9450 **Asus P5Q Deluxe**Corsair Dominator 2x2GB PC8500 1066Mhz-555 XMS2**Sapphire Vapor-X HD7970 GHz Edition 3GB GDDR5**Samsung SSD 830 256GB**WD Caviar 1TB SATA**Creative X-Fi Elite Pro **Pioneer DVR-215D**Altec Lansing FX6021**Crossover 2720MDP**Logitech diNovo Cordless Desktop**Cooler Master Storm Sentinel Advance on Razer eXactMat |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:43.