Qwertid
02-03-2005, 13:15
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!
:D
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!
:D