[ Foro de Pascal ]

Funcion que devuelve una matriz

29-Feb-2016 22:49
Invitado (Marcos)
1 Respuestas

Hola gente, ando volviendo a aprender pascal para dar denuevo el final y ya paso tiempo y me olvide muy bien como se hace todo el tema de la sintaxis, por ejemplo tengo que hacer un programa que mediante un numero "x" ingresado por teclado multiplique todos los valores de la matriz ingresada, yo lo que queria hacer es un funcion que multiplique los valores de la matriz y me la devuelva y despues la imprimo, pero a la hora de compilar me devuelva la matriz original sin modificaciones aca tengo el codigo para que se guien un poco:

function Multiplica(MNumeros:TM;n:byte;m:byte;num:integer):TM;
var
 i,j:byte;
begin
 for i:=1 to n do
   for j:=1 to m do
     MNumeros[i,j] := MNumeros[i,j] * num;

 Multiplica := MNumeros;
end;

y cuando quiero imprimir:

Write('Ingrese un numero que multiplique a la matriz (distinto de 0): ');
Readln(num);
if num = 0 then
  Write('Ingreso un numero nulo.')
else
begin
     Multiplica(MNumeros,n,m,num);
      for i:=1 to n do
          begin
           for j:=1 to m do
                  Write(MNumeros[i,j],' ');
                  writeln;
          end;
end;


03-Mar-2016 03:41
Luis Torres (+18)

En Turbo Pascal una función no puede devolver ni un arreglo ni una matriz. La forma de trabajar en esos casos sería utilizar un procedimiento y usar variables del tipo matriz o vector por referencia. Un procedimiento que haga lo que tú pretendes sería el siguiente:


Procedure Multiplica(var MNumeros:TM;n:byte;m:byte;num:integer); 
var 
 i,j:byte; 
begin 
 for i:=1 to n do 
   for j:=1 to m do 
     MNumeros[i,j] := MNumeros[i,j] * num; 
end; 


Espero haberte ayudado.
Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)