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



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

End

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

End

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

Сделаем еще один шаг: попадание точки в заданную область равносильно одновременному выполнению (операция «И») трех условий: ,  и , поэтому получаем такой вариант с использованием сложного условия:

if (x0 > 0) and (y0 > 0) and (y0 < 2 - x0) then begin

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

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

 

4) В этой программе внешне все выглядит правильно, поэтому весьма вероятно, что сделана «ловушка» на какой-то особый (вырожденный) случай. При решении квадратного уравнения «особый случай» – это равенство дискриминанта нулю (два одинаковых корня). Проверяя его, сразу обнаруживаем, что при этом условие D > 0 не срабатывает и программа выдает сообщение «действительных корней нет». Поэтому, например, для  программа работает неверно. При этом можно вводить любые x1 и x2 , поскольку в эти переменные записываются результаты вычислений (корни уравнения) анне исходные данные. Это ответ на второй вопрос: вместо оператора

readln(a,b,c,x1,x2);

правильнее написать

readln(a,b,c);

Чтобы исправить программу, достаточно вместо условия D > 0 написать D >= 0:

var a, b, с, D, xl, x2: real;

Begin

readln(a, b, с);

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

if D >= 0 then begin

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

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

write('xl =', xl);

write('x2 =', x2);

End

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

End.

5) Программа очень плохо написана, мысль автора слабо прослеживается, поэтому сложно разбираться в коде. Для проверки четности числа используется операция mod –остаток от деления целых чисел. Очевидно, что если остаток от деления a на 2 (записывается a mod 2) – нуль, то число a делится на 2 без остатка, то есть – четное.
Для того, чтобы выяснить, когда программа будет работать неверно, можно использовать ручную прокрутку для четырех возможных вариантов:

а) оба числа четных

б) a – четное, b – нечетное

в) a – нечетное, b – четное

г) оба числа нечетных

При этом обнаруживаем, что программа неверно работает во втором случае, например, для . Простейшая (?) доработка программы с сохранением замысла (?) автора может быть такая (расширено действие условного оператора и добавлен else-блок)

var a, b: integer;

Begin

readln(a, b);

a := a mod 2;

if a > 0 then begin

b := b mod 2;

if b > 0 then

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

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

End

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

End.                             

Чтобы сделать программу красивой и понятной, запишем на Паскале вполне ясное условие: «если a – четное или b – четное, то четное число есть, иначе – нет»:

var a, b: integer;

Begin

readln(a, b);

if (a mod 2 = 0) or (b mod 2 = 0) then


Дата добавления: 2018-06-01; просмотров: 256; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!