Сумма нечетных четных чисел

#pascal

#паскаль

Вопрос:

Мне нужно вычислить нечетную / четную сумму, вот что у меня есть на данный момент:

 PROGRAM EvenOddSum;
USES
  WinCrt;
VAR
  odd, even, x: INTEGER;

  BEGIN

  WriteLn('Calculation of sum');
  WriteLn;
  odd := 0;
  even := 0;
  Write('Enter value(s)');
  WHILE x > 0 DO BEGIN
   IF x mod 2:= 0 THEN BEGIN
     even := even   x;
   ELSE
     odd := odd   x;

  ReadLn(x);
  END;
  WriteLn;
  WriteLn('Even sum is = ', even);
  WriteLn('Odd sum is =', odd);
  END.
  

Я использую freepascal.org компилятор, и я получаю эту ошибку :

 SYNTAX error THEN expected but := found
  

И я просто не вижу проблемы с этим кодом.

Комментарии:

1. Последний раз я писал на Pascal в 1983 году, но вы уверены, что после этого вам нужно ключевое слово BEGIN ? Я помню, что BEGIN вводит блок инструкций, подобный { does в C / C / Java / C # .

2. @EricJ. Я думаю, так вики. freepascal.org/IF

Ответ №1:

В Pascal := это оператор присваивания. Замените его = на в строке, которая читается IF x mod 2:= 0 THEN BEGIN .

Кроме того, удалите BEGIN . Результат должен выглядеть следующим образом:

 IF x mod 2 = 0 THEN
  

Ответ №2:

Это здесь:

 IF x mod 2:= 0 THEN BEGIN
  

Используется := для присваивания, используйте ‘=’ или ‘==’ для сравнения.
(С моей точки зрения, я не знаю, использует ли Pascal ‘=’, ‘==’ или оба для сравнения. Один из них должен сделать свое дело).

Ответ №3:

Если я не ошибаюсь, := используется для объявления и присвоения значения. Для условия вы должны использовать = .

изменить x mod 2:= 0 на x mod 2 = 0

Ответ №4:

Вы могли бы сказать:

x mod 2 > 0 then writeln(x);

При этом будут выведены все нечетные числа.