2015-09-06 5 views
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. 

Здравствуйте извините за беспокойство, я previusly сделал этот код для Java и теперь был traying, чтобы перевести его на Паскаля, но я наклоняю понял его, почему он говорит, что у меня есть ошибка синтаксиса, ";" ожидаемый, но «ELSE» найден в строке (30,5). Вы можете мне помочь?Pascal Ошибка синтаксиса в строке

+0

Вы должны окружить код после того, как ваш '' else' с begin' и 'end' – nepb

ответ

0

Строка 30 - это заявление ELSE. IF чуть выше, который имеет две строки кода между else и if. Каждый раз, когда у вас есть более одной строки между if и else, у вас должен быть блок begin/end. http://docwiki.embarcadero.com/RADStudio/XE8/en/Declarations_and_Statements#If_Statements

Изменить код

IF primo > 1 THEN BEGIN 
    writeln(factor,'^',primo); 
    multiplicidad := false; 
END ELSE BEGIN 
    writeln(factor); 
    multiplicidad := false; 
END; 
0

мне удалось решить проблему с помощью кладя точку с запятой в:

UNTIL numero = 1; 
Смежные вопросы