<u>Во-первых</u> - не имейте моду писать всё в одну строчку. Сейчас Вы в этом убедились, поскольку не можете найти ошибку. Объясняю, как надо:
- if <условие> then
- // оператор
Никаких if <условие> then // оператор, - забудьте про это навсегда.
Это Вам не тернарный оператор <условие> ? <оператор_при_true> : <оператор_при_false>.
<u>Во-вторых</u> - Вы засовываете логическую переменную в блок условия. Объясняю:
- if D > 0 then
- x1 := ... and x2 := ...
Вы не можете таким образом объявлять переменные. Каждое действие - в новой строке, а также должно оканчиваться точкой с запятой. Как должно быть написано правильно:
- if D > 0 then
- begin
- x1 := ...
- x2 := ...
- end // здесь точка с запятой не нужна, поскольку далее следует блок else
- else
- if D = 0 then
- x := ... // здесь тоже запятая не нужна
- else
- write('...');
<u>В-третьих</u> - обезопасьте себя и поставьте порядок операций в поиске корней дискриминанта:
- x1 := (-b + sqrt(D)) / (2*a) // без скобок выполнится деление на 2, а потом умножение на a
Так же стоит сделать и с x := ...
Если ошибка не пропадает - пишите в комментариях её описание (ошибки).
// 1
begin
writeln('M':3);
writeln('MMM':4);
writeln('MMMMM');
writeln('M M':4);
writeln('MMM':4);
end.
// 2
begin
writeln('M');
writeln('MM');
writeln('MMMMMM');
writeln('MM':6);
writeln('M':6);
end.
//3
begin
writeln('M','M':6);
writeln('M':2,'M':4);
writeln('MMMMM':6);
writeln('M M M':6);
writeln('MMMMM':6);
end.
//4
begin
writeln('M':7);
writeln('MM':7);
writeln('MMM':7);
writeln('MMMMM':7);
writeln('MMMMMMM');
end.
//5
begin
writeln('M','M':4);
writeln('MM','MM':3);
writeln('MMMMM');
writeln('MM','MM':3);
writeln('M','M':4);
end.
Запишем формулу суммы в виде, более удобном для программирования:
var
i:integer;
x,xi,x2,s:real;
begin
Write('x = '); Read(x);
s:=0.5;
xi:=x;
x2:=x*x;
for i:=2 to 10 do begin
xi:=xi*x2;
s:=s+xi/(2*i)
end;
Writeln('S=',s)
end.
<u>Пример</u>x = 3.62
S=2254030236.00533
<em>Во вложении приведено контрольное решение</em>
Begin
writeln(ord('Б')+ord('А')+ord('Й')+ord('Т'));
end.