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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!