Pascal/Turbo Pascal - ayuda con funciones

 
Vista:

ayuda con funciones

Publicado por manu (4 intervenciones) el 07/12/2006 18:39:37
Hola tengo un problema al realizar un ejercicio de pascal que consiste en producto escalar de dos vectores,debo hacerlo con funciones y sin estas si me sale bien ,pero al intentar realizarlo con funciones ,me da como resultado 0 o un numero muy grande q siempre es el mismo aunque introduzca distintos valores,si alguien puede decirme donde esta el error por favor que conteste.muchas gracias,el programa q yo he hecho es el siguiente:

program productoescalar;
type
vector = array [1..100] of integer;
var
v1,v2:vector;
n:integer;

function producto (v1,v2:vector;n :integer):integer;
var
r,i:integer;
begin
r:=0;
for i:=1 to n do
begin
r:=r + v1[i] * v2[i];
end;
producto:=r;
end;

procedure lee (var v1,v2:vector;n:integer);
var
i:=integer;
begin
writeln('dime el tamaño de los vectores : ');
readln(n);
for i:=1 to n do
begin
writeln('dame el valor del elemento ',i,' de v1: ');
readln(v1[i]);
end;
for i:=1 to n do
begin
writeln('dame el valor del elemento ',i,' de v2: ');
readln(v2[i]);
end;
end;
begin
lee(v1,v2,n);
writeln('el resultado del producto es : ',producto(v1,v2,n));
readln;
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con funciones

Publicado por Carlos Guimaraenz (265 intervenciones) el 07/12/2006 22:27:17
Hola Manu!! el problema está en el procedimiento LEE. El parámetro N debe ser por referencia, ya que ahi mismo lees la cantidad de elementos de los vectores y debe ser conocido por otros módulos también.
Si aún así te sigue dando problemas, avisa. Un abrazo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con funciones

Publicado por manu (4 intervenciones) el 08/12/2006 20:00:21
muchas gracias,era ese el error,ya me sale bien el programa,pero queria preguntar por que el procedimiento LEE devuelve al programa principal los valores de los vectores,y no devuelve N,es que no entiendo muy bien porque da fallo el pedir N en mismo procedimiento que pide las componentes de los vectores,lo pregunto para entenderlo para otros ejercicios con procedimientos,y gracias de nuevo por atenderme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con funciones

Publicado por Carlos Guimaraenz (265 intervenciones) el 08/12/2006 21:02:59
Hola Manu! El procedure LEE debe tener los parámetros por referencia, ya que no sólo importan los valores de los vectores, sino también sus dimensiones lógicas (la cantidad de datos importantes que se cargan). Si leyeras en el programa principal el valor N, entonces sí podrías pasarlo como parámetro por valor, ya que te interesaría conocerlo sólo para leer los datos de los vectores, pero no para modificarlo.
Espero haberme hecho entender. Un abrazo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con funciones

Publicado por manu (4 intervenciones) el 11/12/2006 01:38:32
nada solo darte las gracias por todo.un abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar