
Punteros
Publicado por Alejandro (15 intervenciones) el 13/09/2015 06:47:18
Hola que tal, necesito ayuda con un ejercicio que no logro solucionar.
El ejercicio me pide lo siguiente:
Estructuras con punteros
1) Desarrollar un Programa que devuelva la Multiplicación de los Números introducidos en los
Nodos de la Lista.
Tengo que multiplicar todos los numero que haya ingresado la persona, el tema es que el codigo me anda solo si en el procedimiento MULTIPLICACION le pongo que sume, porque si le pongo que multiplique, me tira cero todo el tiempo, porque esta multiplicando por cero.
Y no entiendo como hacer para que multiplique el numero que tiene en el nodo por el siguiente numero del siguiente nodo. Lo que tendria que hacer es recorrer todo la lista y que cuando termine me diga el resultado de la multiplicacion de todos los numeros de la lista.
El ejercicio me pide lo siguiente:
Estructuras con punteros
1) Desarrollar un Programa que devuelva la Multiplicación de los Números introducidos en los
Nodos de la Lista.
Tengo que multiplicar todos los numero que haya ingresado la persona, el tema es que el codigo me anda solo si en el procedimiento MULTIPLICACION le pongo que sume, porque si le pongo que multiplique, me tira cero todo el tiempo, porque esta multiplicando por cero.
Y no entiendo como hacer para que multiplique el numero que tiene en el nodo por el siguiente numero del siguiente nodo. Lo que tendria que hacer es recorrer todo la lista y que cuando termine me diga el resultado de la multiplicacion de todos los numeros de la lista.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
program lab3_ejer1;
uses crt;
type
tl_lista= ^tNodo;
tNodo= record
ve_nro: integer;
siguiente: tl_lista;
end;
var
vl_lista : tl_lista;
ve_dato: integer;
vl_auxiliar: tl_lista;
procedure inicializarLista(var p_lista: tl_lista);
begin
p_lista:=nil;
end;
function listaVacia(p_lista: tl_lista):Boolean;
begin
if(p_lista= nil) then
listaVacia:=true
else
listaVacia:=false;
end;
procedure insertarPrimero(var p_lista: tl_lista; p_dato: integer);
begin
new(p_lista);
p_lista^.ve_nro:= p_dato;
p_lista^.siguiente:= nil;
end;
procedure insertarAdelante(var p_lista: tl_lista; p_dato: integer);
var
vl_auxiliar: tl_lista;
begin
new(vl_auxiliar);
vl_auxiliar^.ve_nro := p_dato;
vl_auxiliar^.siguiente:= p_lista;
p_lista:= vl_auxiliar;
end;
procedure insertarElemento(var p_lista: tl_lista; p_dato: integer);
begin
if p_lista= nil then
insertarPrimero(p_lista, p_dato)
else
insertarAdelante(p_lista, p_dato);
end;
procedure VisualizarTodos(p_lista: tl_lista);
begin
if not listaVacia(p_lista) then
begin
while(p_lista<> nil) do
begin
writeln('Dato: ', p_lista^.ve_nro);
p_lista:= p_lista^.siguiente;
end;
end
else
writeln('Lista vacia!!!');
end;
procedure cargarNros;
begin
writeln;
write ('Ingrese el n',chr(163),'mero: ');
write;
readln (ve_dato);
insertarElemento (vl_lista, ve_dato);
end;
procedure multiplicacion(p_lista: tl_lista);
var
vl_auxiliar: tl_lista;
va_multi: integer;
begin
va_multi:=0;
if not listaVacia(p_lista) then
begin
vl_auxiliar:= vl_lista;
while(vl_auxiliar <> nil) do
begin
va_multi:= va_multi * vl_auxiliar^.ve_nro; // en esta parte es donde le pongo * y me tira cero, ya que multiplica por cero, pero yo necesito que multiplique por el siguiente numero de la lista, y no sumar
vl_auxiliar:= vl_auxiliar^.siguiente;
end;
writeln ('Resultado: ', va_multi);
end
else
writeln('Lista vacia!!!');
end;
Valora esta pregunta


0