Имя (идентификатор) в PascalABC.NET может содержать символы латинского и русского алфавитов, цифры и знаки подчеркивания, но при этом оно не может начинаться с цифры. В остальных паскалях символы русского алфавита не разрешены.
Подобные задачи ("значение, которое получат переменные..."), когда для получения ответа надо выполнять цикл значительное количество раз в реальном программировании не имеют никакого смысла. Всегда можно сделать трассировку и посмотреть. Ниже - пример такой трассировки.
var s, d: real; i: integer;
begin writeln('Трассировка начата'); s := 0; for i := 1 to 49 do begin d := i * (i + 1); s := s + 1 / d; writeln('i=', i:2, ', d=', d:4, ', s=', s:8:6); end; writeln('Трассировка завершена'); writeln('S=', s); end.
В исходном тексте программы была синтаксическая ошибка: после оператора S:=0 отсутствовала точка с запятой, на что немедленно указал компилятор. Практически смысл имеет "трассировка на бумаге" для нескольких выполнений тела цикла с тем, чтобы убедиться в правильности работы алгоритма. И не более того. Анализ программы показывает, что она вычисляет сумму вида В книге "Интегралы и ряды" М.Прудников и др.., М,: Наука, 1981 на стр. 601 приводится формула 4.1.4.2
Итак, сумма может быть легко вычислена для любого количества повторений цикла. Нужно ли вообще в таких случаях писать программу?
Это был урок для делающих первые шаги в увлекательном мире программирования.
Нарушением условия является случай, когда у мальчика (М) или у девочки (Д) оба соседа того же пола, следовательно недопустимой является расстановка МММ или ДДД. Отсюда возникает условие, что количество М и Д не могут отличаться более, чем вдвое, т.е. 0.5 ≤ X/Y ≤ 2 Программа должна учитывать особенности реализации целых и вещественных чисел в ЭВМ, а также особенности выполнения операции деления и сравнения.
var X, Y: integer; b: boolean; F: Text; begin Assign(f,'input.txt'); Reset(f); Readln(X,Y); Close(f); if X > Y then b := (X / Y <= 2) else b := (Y / X <= 2); if b then writeln('YES') else writeln('NO') end.