Necesito ayuda con un programa en lenguaje Pascal

Tengo una duda con el siguiente programa, específicamente se trata de ingresar 3 números, donde si n1 es mayor a n2 los reste, si n1 es menor a n2, los sume, y si son iguales los multiplique, el problema esta en que cuando ingreso los números iguales, me los suma y multiplica, estoy recién en esto, abajo va el programa escrito.
Gracias.
program ejer2guia;
uses
wincrt;
var
N1,N2,rest,mult,sum:integer;
resp:char;
begin
resp:='s';
while (resp='S') or(resp='s') do
begin
writeln('INGRESE N1:');
readln(N1);
writeln('INGRESE N2:');
readln(N2);
if N1>N2 then
begin
rest:=N1-N2;
writeln('LA DIFERENCIA ENTRE N1 Y N2 ES:',rest);
end
else
begin
sum:=N1+N2;
writeln('LA SUMA ENTRE N1 Y N2 ES:',sum);
end;
if N1=N2 then
begin
mult:=N1*N2;
writeln('LA MULTIPLICACION ENTRE N1 Y N2 ES:',mult);
end;
writeln ('');
writeln ('');
writeln('DESEA SEGUIR INGRESANDO MAS DATOS:(S/N)');
readln(resp);
end
end.

1 Respuesta

Respuesta
1
El problema esta en que deberías de comparar si son iguales primero, porque si pones primero la comparación de " If n1>n2 then" e ingresas dos números iguales pascal dirá que n1 no es mayor a n2, en consecuencia la siguiente linea en ejecutarse sería el Else es por eso que lo suma y luego en el segundo if que es el "if n1= n2 then" pues dirá que es verdad y también lo multiplicara.
Para mayor aclaración te incluyo como seria la forma correcta de ordenarlo al código:
{1º CON IF ANIDADOS}
program ejer2guia;
uses
wincrt;
var
n1,N2:Integer;
rest,mult,sum:integer;
resp:char;
begin
resp:='s';
while ucase(resp)='S' do
begin
writeln('INGRESE N1:');
readln(N1);
writeln('INGRESE N2:');
readln(N2);
if n1 = n2 then
begin
mult:=n1*n2;
write(?la multip:?,mult);
end
else
if N1>N2 then
begin
rest:=N1-N2;
writeln('resta:',rest);
end
else
begin
sum:=N1+N2;
writeln('SUMA:',sum);
end;
writeln ('');
writeln ('');
write('desea seguir s/n ');
readln(resp);
end;
end.
{OTRA MANERA SERIA CON LOS IF SIN ANIDAR OSEA INDEPENDIENTES}
program ejer2guia;
uses
wincrt;
var
n1,N2:Integer;
rest,mult,sum:integer;
resp:char;
begin
resp:='s';
while ucase(resp)='S' do
begin
writeln('INGRESE N1:');
readln(N1);
writeln('INGRESE N2:');
readln(N2);
if n1 = n2 then
begin
mult:=n1*n2;
write(?la multip:?,mult);
end;
if N1>N2 then
begin
rest:=N1-N2;
writeln('resta:',rest);
end
if n1 <n2 then
begin
sum:=N1+N2;
writeln('SUMA:',sum);
end;
writeln ('');
writeln ('');
write('desea seguir s/n ');
readln(resp);
end;
end.
Bueno esta es tu respuesta espero no haberme equivocado pues no lo he hecho en pascal pero espero que no tenga ningún fallo.
No se si lo sepas pero aun así te lo aclaro el "Ucase" es para pasar una letra de minúscula a mayúscula y si esta en mayúscula no le hace nada.
Pues ya sabes puedes consultarme cualquier otra cosa cuando lo necesites..
Pd. No te olvides de calificar y finalizar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas