Top.Mail.Ru
Ответы

Помогите с заданиями.

№1 Требовалось написать программу, которая определяет, лежит ли точка А (х0, у0) внутри треугольной области, ограниченной осями координат и прямой у = 2 - x («внутри» понимается в строгом смысле, т. е. случай, когда точка А лежит на границе области, недопустим), В результате программа должна выводить соответствующее текстовое сообщение. Программист сделал в программе ошибки.

Программа на Паскале

var х0, у0, у: real;

begin

readln (х0, у0);

if(x0<2) then

begin

if(х0>0)then

begin

у = 2 – х0;

if (y0 < y) then writeln ('точка лежит внутри области')

else writeln ('точка не лежит внутри области');

end;

else writeln ('точка не лежит внутри области'); end;

writeln ('точка не лежит внутри области');

end.

Последовательно выполните задания:

1) Приведите пример таких чисел х0 и у0, при которых программа неверно решает поставленную задачу.

2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы).

3) Укажите, как можно доработать программу, чтобы вместо вложенных оператором IF она содержала логическию операцию AND.

№2 Требовалось написать программу, которая решает уравнение «ах2 + bх+с = 0» относительно х для действительных чисел а, b, с, введенных с клавиатуры, о которых заведомо известно, что a <>0, b<>0, c<>0.

Была написана следующая программа:

Программа на Паскале

var а, b, с, D, х 1, х2: real;

begin

readln(a, b, с, х 1, х2);

D:=b*b-4*a*c;

If D>0 then begin

xl := (-b + sqrt (D))/(2*a);

x2 := (-b - sqrt (D))/(2*a);

write('x1 =’, x1);

write('x2 =', x2);

end

else writeln ('действительных корней нет');

end.

Известно, что программа написана с ошибками. Последовательно выполните три задания:

1) Приведите пример таких чисел а, b, с. при которых программа неверно решает поставленную задачу.

2) Укажите, какая часть программы является лишней.

3) Укажите, как, по-вашему мнению, нужно доработать программу, чтобы не было случаев ее неправильной работы.

№3 Требовалось написать программу, которая определяет, имеется ли среди введенных с клавиатуры целых чисел а и b хотя бы одно четное. Была написана следующая программа:

Программа на Паскале

var a, b: integer;

begin

readln(a, b);

a := a mod 2;

if a > 0 then b := b mod 2;

if b>0then

writeln ('четных чисел нет')

else writeln( 'четное число есть');

end.

Известно, что программа написана с ошибками. Последовательно выполните три задания: 1) приведите пример таких чисел я, Ь, при которых программа неверно решает поставленную задачу;

3) укажите, как, по вашему мнению, нужно доработать программу, чтобы не было случаев ее неправильной работы;

4) укажите, как можно доработать программу, чтобы она вместо вложенных операторов IF содержала логическую операцию OR.

Дополнен

во 2-й задаче где a <>0, b<>0, c<>0. это
А не равно 0, Б не равно 0, С не равно 0

По дате
По Рейтингу
Аватар пользователя
Мастер
9лет

Думаю что примерно вот так:
№1
1) Приведите пример таких чисел х0 и у0, при которых программа неверно решает поставленную задачу.
x0 = 1, y0 = -1.

2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы).
Добавить условие что (y0>0), например в строку: if (y0 < y) then writeln ('точка лежит внутри области')
получится: if (y0>0)AND(y0 < y) then writeln ('точка лежит внутри области')

3) Укажите, как можно доработать программу, чтобы вместо вложенных оператором IF она содержала логическию операцию AND.
var х0, у0, у: real;
begin
readln (х0, у0);
у = 2 – х0;
if (x0<2) AND (х0>0) AND ((y0 < y) AND (y0 > 0)) then writeln ('точка не лежит внутри области');
else writeln ('точка не лежит внутри области');
end.

№2
1) Приведите пример таких чисел а, b, с. при которых программа неверно решает поставленную задачу.
a = 1, b = 2. Если D = 0, то программа считает что действительных корней есть, хотя в данной ситуации есть один корень.

2) Укажите, какая часть программы является лишней.
В строке readln(a, b, с, х 1, х2); не требуется считывание x1 и x2.

3) Укажите, как, по-вашему мнению, нужно доработать программу, чтобы не было случаев ее неправильной работы.
Заменить условие в строке If D>0 then begin на >=0.
Либо можно сделать еще один if для рассчета корня при D=0.
If D>0 then begin
xl := (-b + sqrt (D))/(2*a);
x2 := (-b - sqrt (D))/(2*a);
write('x1 =’, x1);
write('x2 =', x2);
end
else If D=0 then begin
xl := (-b/(2*a);
write('x1 = x2 =’, x1);
end
else writeln ('действительных корней нет');

№3
1) приведите пример таких чисел я, Ь, при которых программа неверно решает поставленную задачу;
Если a и/или b отрицательные.

3) укажите, как, по вашему мнению, нужно доработать программу, чтобы не было случаев ее неправильной работы;
Условия a > 0 и b > 0 заменить на a<>0 и b<>0.

4) укажите, как можно доработать программу, чтобы она вместо вложенных операторов IF содержала логическую операцию OR.
var a, b: integer;
begin
readln(a, b);
a := a mod 2;
b := b mod 2;
if (a = 0) OR (b = 0) then writeln( 'четное число есть');
else writeln('четных чисел нет');
end.

Удаленный ответ Ответ удалён