[ Foro de Pascal ]
Buenaaassss....Necesito ayuda con este código...Quiero obtener los totales, pero no puedo....Hay algo que no estoy haciendo bien...¿Qué es??? (Aclaro que recien estoy aprendiendo Procedimientos)
PROCEDURE ingreso_de_datos(dato:char;
beb1,beb2,beb3,beb4:integer;
c_beb1,c_beb2,c_beb3,c_beb4:integer; {10}
var c_1,c_2,c_3,c_4:integer);
begin
writeln('ingrese el numero correspondiente a la bebida que usted consume');
writeln('1.--------> jugo');
writeln('2.--------> gaseosa');
writeln('3.--------> amargo');
writeln('4.--------> agua mineral');
readln(dato);
if (dato='1') then {20}
begin
beb1:=beb1+1;
c_beb1:=c_beb1+beb1;
end
else
if (dato='2') then
begin
beb2:=beb2+1;
c_beb2:=c_beb2+beb2;
end {30}
else
if (dato='3') then
begin
beb3:=beb3+1;
c_beb3:=c_beb3+beb3;
end
else
if (dato='4') then
begin
beb4:=beb4+1; {40}
c_beb4:=c_beb4+beb4;
end;
end;
BEGIN
CLRSCR;
while cont_jov<4 do{50}
begin
writeln('ingrese su edad');
readln(edad);
if (edad>=15) or (edad<=30) then
begin
cont_jov:=cont_jov+1;
ingreso_de_datos(eleccion,j,g,am,ami,tot_ju,tot_ga,tot_ag,tot_am,b_1,b_2,b_3,b_4);
end;
end;
ingreso_de_datos(eleccion,j,g,am,ami,tot_ju,tot_ga,tot_ag,tot_am,b_1,b_2,b_3,b_4);{60}
writeln('jugos: ',j);
writeln('gaseosas: ',g);
writeln('amargos: ',am);
writeln('agua mineral: ',ami);
readln;
END.{66}
Hay varios problemas.
- Por una parte, no queda claro lo que es cada variable: ¿qué diferencia hay entre "c_beb3" y "beb3"?
- Por otra parte, recuerda que si modificas un parámetro de una función, no se guardan los cambios, a no ser que tengan delante la palabra "VAR" para indicar que está pasando esos datos por referencia, no por valor.
- Además, las variables no tienen valor inicial: si beb3 tiene basura, beb3+1 también tendrá basura.
- Y también, quizá no estés sumando como deberías: si haces c_beb3 = c_beb3+beb3, en la primera pasada estarás sumando 1, en la segunda sumarás 2, en la siguiente 3, y así sucesivamente. No sé si es eso lo que quieres, porque no entiendo lo que hace tu programa, pero es fácil que no sea esa tu intención.
mira tenes varios problemitas,en tu procedimiento si queres que los cambios surtan efecto tenes que pasar los parametros por referencia,ademas para mi gusto usas muchos parametros ignecesarios!en el procedimiento.
PROCEDURE ingreso_de_datos( parametros );
begin
beb1:=0;beb2:=0;beb3:=0;beb4:=0;{te falto inicializartusparametros} writeln('ingrese el numero correspondiente a la bebida que usted consume');
writeln('1.--------> jugo');
writeln('2.--------> gaseosa');
writeln('3.--------> amargo');
writeln('4.--------> agua mineral');
readln(dato);
if (dato='1') then {20}{todos estos if anidados los podes reemplazar}
begin{por un case}
beb1:=beb1+1;
c_beb1:=c_beb1+beb1;{estos contadores parese que estan de mas}
end
else
if (dato='2') then
begin
beb2:=beb2+1;
c_beb2:=c_beb2+beb2;
end
cualquier cosa mando el enunciado de tu problema para que te pueda ayudar mejor!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.)