[ Foro de Pascal ]
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;
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.)