Контрольный срез по информатики 11 класс в форме ЕГЭ.


Ответы на задания части 1, части 2.
А1А2А3 А4В1В2Вариант 1 1 2 3 3 12121 ecafgbdВариант 2 2 2 4 4 11122 ДВАЕГБЖ
Вариант 1(Ответ на задание части 3: С1)
Программа работает неправильно, если a и b не равны нулю и имеют разные знаки: в этом случае уравнение не имеет решений (поскольку модуль – неотрицательная величина), а программа выдаст два решения. Хотя в задании сказано «Приведите пример таких чисел a, b, x,…», значение x ни на что не влияет, в ответе можно указать любое число x. Например, Лишняя часть программы – ввод x, поскольку это не исходные данные, а результат.
Поэтому вместо оператора: readln(a,b,x);
правильнее написать: readln(a,b);
Переменная x далее не используется, поэтому ее не нужно объявлять: var a,b: real;
Возможная доработка программы – добавить еще один условный оператор, обрабатывающий неучтенный случай (a и b не равны нулю и имеют разные знаки), при котором нет решений:
var a,b: real;
begin
readln(a,b);
if a = 0 then
if b = 0 then
write ('любое число')
else write ('нет решений')
else
if b = 0 then
write('x = 0')
else if a*b < 0 then
write('нет решений')
else write('x =',b/a,' или x =',-b/a);
end.
для проверки условия «a и b имеют разные знаки» использовано произведение a*b, которое больше нуля, когда два значения имеют одинаковые знаки, и меньше нуля – когда разные
Вариант 2(Ответ на задание части 3 С1)
Программа работает неправильно, если a и b равны нулю: в этом случае решением уравнения является любое число x, а программа выдаст только решение . Хотя в задании сказано «Приведите пример таких чисел a, b, x,…», значение x ни на что не влияет, в ответе можно указать любое число x. Например, Лишняя часть программы – ввод x, поскольку это не исходные данные, а результат. Поэтому вместо оператора : readln(a,b,x);
правильнее написать: readln(a,b);
Переменная x далее не используется, поэтому ее не нужно объявлять: var a,b: real;
Возможная доработка программы – добавить еще один условный оператор, обрабатывающий неучтенный случай (a и b равны нулю), при котором решением является любое число:
var a,b: real;
begin
readln(a,b);
if b = 0 then
if a = 0 then
write('любое число')
else write('x = 0')
else if a = 0 then
write('нет решений')
else write('x =',-b/a);
end.
можно еще немного оптимизировать программу: заметим, что в обеих частях первого условного оператора встречается оператор if a = 0 then; его можно «вынести» наверх, сделать внешним, а не вложенным:
if a = 0 then
if b = 0 then
write('любое число')
else write('нет решений')
else write('x=',-b/a);
или рассмотреть три возможных варианта
if (a=0) and (b=0)then
write('любое число');
if (a=0) and (b<>0)then
write('нет решений');
if a <> 0 then
write('x=',-b/a);
нужно убедиться, что для каждого варианта входных данных сработает один и только один условный оператор

Приложенные файлы


Добавить комментарий