1.) Что делают эти операторы?
а) write(A[3]);
b) A[3]:=5;
c) A [1]:= A [2]+2* A [3];
2.) Определите, что выведет этот фрагмент программы для массива.
i:=2;
A[3]:= A[i]+2* A[i-1]+ A[2*i];
write(A[3]+ A[5]);
3.) Найдите ошибки в этом фрагменте программы:
var A:array[1..5] of integer;
x: integer;
…
x:=2;
write(A[x-3]);
A[x+4]:= A[x-1]+ A[2*x];
В чём заключаются ошибки?
Program Ikiru;
uses crt;
var
y,x:real;
begin
writeln('*** Alphaeus is thinking... ***');
writeln('*** OK ***');
writeln(); writeln();
write('Введите Х '); readln(x);
if (sin(3*x)=0) or (ln(1+x*x)=0) or (cos(x)<=0)
then
writeln('Функция Y для этого значения Х не определена')
else
begin
y:=2*(cos(3*x)/sin(3*x))-ln(cos(x))/ln(1+x*x);
writeln('y=',y:8:2);
end;
end.
Пояснения:
write('Введите Х '); readln(x);
- программа просит пользователя ввести х
if (sin(3*x)=0) or (ln(1+x*x)=0) or (cos(x)<=0)
- проверка существования функции (функция ctgХ не существует, если sinX=0, ln берется только от неотрицательных значений, в знаменателе дроби не может быть 0)
Если хотя бы одно из условий не выполняется, выводится ссобщение о том, что функция для этого значения не определена.
Если все проверки пройдены, программа вычисляет значение функции Y и выводит его на экран.
(1 + 0) - истинна, т.к. дизъюнкция истинна если хотя-бы одна из переменных истинна
(0 + 0) - ложна, т.к. обе перменные ложны
(1 + 0)*(0+0) - ложна, т.к. первая скобка истинна, а вторая ложна, а в конъюнкции для истины обе скобки должны быть истинны.
1*0 - ложна, т.к. в конъюнкции обе переменные должны быть истинны.
Для удобства разделил скобками
((1 + 0)*(0+0)) + (1*0) - ложна, т.к. первая (большая) скобка ложна, вторая скобка (1*0) тоже ложна, между ними дизъюнкция, то есть хотя-бы одна из них должна быть истинна. Они обе ложны, значит результатом выражения
(1 + 0)*(0+0) + 1*0
будет 0