Else If 的 Pascal 问题
Pascal issue with Else If
PROGRAM FactorPrimo(input,output);
VAR
numero : integer;
factor : integer;
resto : integer;
primo : integer;
multiplicidad : boolean;
BEGIN
write('Ingrese numero: ');
readln(numero);
factor := 2;
primo := 0;
multiplicidad := false;
IF numero > 1 THEN
BEGIN
REPEAT
BEGIN
resto := numero MOD factor;
IF resto = 0 THEN
BEGIN
numero := numero DIV factor;
primo := primo + 1;
multiplicidad := true;
END
ELSE IF multiplicidad = true THEN
IF primo > 1 THEN
writeln(factor,'^',primo);
multiplicidad := false;
ELSE
writeln(factor);
multiplicidad := false;
ELSE
factor := factor + 1;
primo := 0;
END;
UNTIL numero = 1;
writeln(factor);
END
ELSE
write('Debe ingresar un numero mayor a 1');
END.
我不知道为什么程序不会进入 IF PRIMO > 1 then
它总是转到下面的 ELSE 语句。我做错了什么吗?我已经在 java 完成了并且工作正常。
工作正常它应该说:
factor^primo
但是显示的只有:
factor
它应该从 if 到 else if 并尝试 else。但是它现在所做的是从 if 到 else 再到 else if。
一个例子,数字 360 应该是:
2^3
3^2
5
但是现在显示的是:
2
3
5
我认为这是因为它总是以 primo = 0 结尾,我不知道如何解决这个问题。
通过更改 else 中的 primo = 0
if 成功了,现在可以正常工作了。
ELSE IF multiplicidad = true THEN
IF primo > 1 THEN
writeln(factor,'^',primo);
multiplicidad := false;
primo = 0;
ELSE
writeln(factor);
multiplicidad := false;
primo = 0;
PROGRAM FactorPrimo(input,output);
VAR
numero : integer;
factor : integer;
resto : integer;
primo : integer;
multiplicidad : boolean;
BEGIN
write('Ingrese numero: ');
readln(numero);
factor := 2;
primo := 0;
multiplicidad := false;
IF numero > 1 THEN
BEGIN
REPEAT
BEGIN
resto := numero MOD factor;
IF resto = 0 THEN
BEGIN
numero := numero DIV factor;
primo := primo + 1;
multiplicidad := true;
END
ELSE IF multiplicidad = true THEN
IF primo > 1 THEN
writeln(factor,'^',primo);
multiplicidad := false;
ELSE
writeln(factor);
multiplicidad := false;
ELSE
factor := factor + 1;
primo := 0;
END;
UNTIL numero = 1;
writeln(factor);
END
ELSE
write('Debe ingresar un numero mayor a 1');
END.
我不知道为什么程序不会进入 IF PRIMO > 1 then
它总是转到下面的 ELSE 语句。我做错了什么吗?我已经在 java 完成了并且工作正常。
工作正常它应该说:
factor^primo
但是显示的只有:
factor
它应该从 if 到 else if 并尝试 else。但是它现在所做的是从 if 到 else 再到 else if。
一个例子,数字 360 应该是:
2^3
3^2
5
但是现在显示的是:
2
3
5
我认为这是因为它总是以 primo = 0 结尾,我不知道如何解决这个问题。
通过更改 else 中的 primo = 0
if 成功了,现在可以正常工作了。
ELSE IF multiplicidad = true THEN
IF primo > 1 THEN
writeln(factor,'^',primo);
multiplicidad := false;
primo = 0;
ELSE
writeln(factor);
multiplicidad := false;
primo = 0;