
Часть 2
Раздел 6.
5
59.C1.
Требовалось написать программу, кото-
рая
вводит с клавиатуры координаты
точки
на плоскости (х, у — действитель-
ные
числа) и определяет принадлежность
точки
заштрихованной области, включая
ее
границы. Программист торопился и
написал
программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ |
var х,у: real; begin readln(х,у); if у>=0 then if x<=1.57 then if y<=sin(x) then write(‘ принадлежит’} else write{'не принадлежит’) end. . |
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у, при которых программа не- верно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случа- ев ее неправильной работы. (Это можно сделать несколькими спосо- бами, поэтому можно указать любой способ доработки исходной программы).
560.C1. Требовалось написать программу, кото- рая вводит с клавиатуры координаты точки на плоскости (х, у — действитель- ные числа) и определяет принадлежность точки заштрихованной области, включай ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА |
var х,у: real; |
НА ПАСКАЛЕ |
begin readln(х, у); if у<=0 then if у>=-1 then if y<-cos(x) then wri te (‘ принадлежит’) else write(‘ не принадлежит’) end. |
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у, при которых программа не- верно решает поставленную задачу,
2) Укажите, как нужно доработать программу, чтобы не было случа- ев ее неправильной работы, (Это можно сделать несколькими спосо- бами, поэтому можно указать любой способ доработки исходной программы).
5
61.C1.Требовалось
написать программу, кото-
рая вводит
с клавиатуры координаты
точки на
плоскости (х, у — действи-
тельные
числа) и определяет принад-
лежность
точки заштрихованной облас-
ти,
включая ее границы. Программист
торопился
и написал программу непра-
вильно.
|
var х,у: real; |
ПРОГРАММА |
begin |
НА ПАСКАЛЕ |
readln(х,у); if х>=0 then if у>=-1 then if y<=cos(x) then write(‘ принадлежит’) else write ('.не принадлежит') end. |
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у при которых программа не- верно решает поставленную задачу,
2) Укажите, как нужно доработать программу, чтобы не было слу- чаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки ис- ходной программы).
5
62.C1.
Требовалось написать программу, кото-
рая
вводит с клавиатуры координаты
точки
на плоскости (х, у — действи-
тельные
числа) и определяет принад-
лежность
точки заштрихованной облас-
ти,
включая ее границы. Программист
торопился
и написал программу непра-
вильно.
|
var х, у-: real; |
ПРОГРАММА |
begin |
НА ПАСКАЛЕ |
readln{х,у); if х>=0 then if у>=0 then if y<=cos(x) then write(‘ принадлежит’) else write('не принадлежит ‘) end. |
Последовательно выполните следующее:
1) Приведите пример таких чисел х9 у9 при которых программа не- верно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было слу- чаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки ис- ходной программы).
563.C1. Требовалось написать программу, которая решает неравенство «(ах)/(х + b) > 0» относительно х для любого ненулевого числа а и любого неотрицательного числа Ъ и (а ≠0, b > 0), введенных с кла- виатуры. Все числа считаются действительными. Программист то- ропился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ |
var a,b,x: real; begin readln (a, b,x); if b = 0 then write('x > 0 или x < 0’) else if a > 0 then write ('x > 0 или x <',-b) else write(-b,’< x <0' ); end. |
Последовательно выполните три задания:
1) Приведите пример таких чисел а, Ь, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было слу- чаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки ис- ходной программы).
564.C1. Требовалось написать программу, которая решает уравнение «а|x| = b» относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
|
var a,b,x: real; |
ПРОГРАММА |
begin |
НА ПАСКАЛЕ |
readln(a, b, x); |
|
if a = 0 then |
|
if b = 0 then |
|
write ('любое число') |
|
else |
|
write ('нет решений')' |
|
else |
|
if b = 0 then |
|
write('x = 0') |
|
else |
|
Write('x =',b/a,' или x = ',-b/a);- |
|
end. |
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было слу- чаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки ис- ходной программы).
565.C1. Требовалось написать программу, которая решает неравенство «(х- а)/{bх) > 0» относительно х для любых ненулевых чисел а и b (b ≠ О, а ≠ 0), введенных с клавиатуры. Все числа считаются дейст- вительными. Программист торопился и написал программу непра- вильно.
ПРОГРАММА НА ПАСКАЛЕ
|
var a,b,x: real; begin readln(a,b,x); if b>0 then write (‘x>’,a,’ или x <0') else if a > 0 then write(‘0 < x< ‘, a) else write(a,’< x <0’); end.
|
Последовательно выполните три задания:
1) Приведите пример таких чисел а, Ь, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было слу- чаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки ис- ходной программы).
566.C1. Требовалось написать программу, которая решает неравенство «(х + а)/(Ьх) < 0» относительно х для любого ненулевого числа Ь и любого неотрицательного числа а и (а ^ О, Ъ * 0), введенных с кла- виатуры. Все числа считаются действительными. Программист то- ропился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
|
var a,b,x: real; begin readln(a, b,x); if a =0 then if b > 0 then write ('нет решений’) else write ('x > 0 или x <0') else write(-a,'< x <0' ) ; end.
|
Последовательно выполните три задания:
1) Приведите пример таких чисел а, Ъ, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было слу- чаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки ис- ходной программы).
567.C1. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принад- лежность точки заштрихованной области, вклю- чая ее границы.
Программист торопился и написал программу не- правильно.
ПРОГРАММА НА ПАСКАЛЕ |
var х,у:real; begin readln(х,y) if у<=х*x then if х<=1.5 then • if у>=0 then write('принадлежит ‘) else write ( 1 н e принадлежит1); end.
|
Последовательно выполните следующее:
1) Приведите пример таких чисел х9 у, при которых программа не- верно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было слу- чаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки ис- ходной программы).
568.C1. Требовалось написать программу, которая решает уравнение «х2 + с = О» относительно х для любого числа с, введенного с кла- виатуры. Все числа считаются действительными. Программист то- ропился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
|
var c,x: real; begin readln(c,x); if c>0 then write(1 нет решений ') else write(‘x=’, sqrt(-c), ‘ или x=',-sqrt (-с)); end.
|
Последовательно выполните три задания:
1) Приведите пример таких чисел с, х, при которых программа не- верно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случа- ев ее некорректной работы. (Это можно сделать несколькими спо- собами, поэтому можно указать любой способ доработки исход- ной программы).
569.C1.Требовалось написать программу, которая определяет, лежит ли точка А(х0,у0) внутри треугольной области, ограниченной осями координат и прямой у = 2 - х («внутри» понимается в строгом смысле» т.е. случай, когда точка А лежит на границе области, недопустим). В результате программа должна выводить соответствующее текстовое сообщение. Про- граммист сделал в программе ошибки.
|_Программа на Паскале_
var х0, у0, y: real; begin
readln (x0, y0); if(x0<2) then begin if(x0>0)then
begin
у = 2 – x0;
if (у0 < y) then writeln ('точка лежит внутри области')
else writeln ('точка не лежит внутри области4);
end;
else writeln ('точка не лежит внутри области*);
end;
writeln ('точка не лежит внутри области'); end.
Последовательно выполните задания:
1) Приведите пример таких чисел х0 и у0, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы).
3) Укажите, как можно доработать программу, чтобы она содержала логические операции AND или OR.
570.C1. Требовалось написать программу, которая определяет, имеется ли среди введенных с клавиатуры целых чисел а и 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) укажите, как можно доработать программу, с использованием логической операции OR.
571.C1. Требовалось написать программу, которая решает уравнение «ax2 + bх+с = 0» относительно х для действительных чисел а, b, с, введенных с клавиатуры, о которых заведомо известно, что а ≠ 0. b≠0,с≠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('xl =’, xl); write('x2 =’, x2); end
else writeln ('действительных корней нет');
Известно, что программа написана с ошибками. Последовательно выполните три задания:
1) Приведите пример таких чисел ау a,b,c, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как, по-вашему мнению, нужно доработать программу, чтобы не было случаев ее неправильной работы.
572.C1. Требовалось написать программу, которая определяет, лежит ли точка А(х0,у0) внутри квадратной области, ограниченной прямыми, параллельными осям координат; у = -2, у = 2, х = -2, х = 2 («внутри» понимается в строгом смысле, т.е. случай, когда точка А лежит на границе области, недопустим).
В результате программа должна выводить соответствующее текстовое сообщение. Программист сделал в программе ошибки. Последовательно выполните задания:
1) Приведите пример таких чисел х0 и у0, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы).
3) Укажите, как можно доработать программу, чтобы она содержала логические операции AND или OR.
Программа на Паскале_
Var x0, у0: real; begin
readln (х0, у0) if(x0<2)then begin
if(x0 > -2) then if (y0 < 2) then writeln (‘точка лежит внутри области'); end;
writeln ('точка не лежит внутри области'); end.
573.C1. Требовалось написать программу, которая определяет, можно ли построить треугольник из отрезков с длинами х, у, z. Программа должна выводить соответствующее текстовое сооб- щение. Программист сделал в программе ошибки. Последовательно выполните задания:
1) Приведите пример таких чисел х, у, z, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать один из способов доработки исходной программы).
3) Укажите, как можно доработать программу, чтобы она содержала логическую операцию AND или OR.
Программа на Паскале
var х, у, z: real; begin
readln (x, у, z); if(x + у > z) then begin
i f (x + z. > y) then if (y + z. > x) then
writeln ('треугольник построить можно'); end;
writeln('Tpeyгольник построить нельзя');
574.C1. Требовалось написать программу, которая определяет, лежит ли точка А(х,у) внутри неко- торого кольца (''внутри" понимается в строгом смысле, т.е. случай, когда точка А лежит на границе кольца, недопустим). Центр кольца находится в начале координат. Для кольца
заданы внутренний и внешний радиусы rl, r2, известно, что r1 отлично от r2, но неизвест- но, r1 > r2 или r2 > r1. В том случае, когда точка А лежит внутри кольца, программа должна выводить соответствующее сообщение, в противном случае никакой выходной информа- ции не выдается. Программист сделал в программе ошибки. Последовательно выполните задания:
1) Приведите пример таких чисел х и у, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
3) Укажите, как можно доработать программу, чтобы она не содержала логических операций AND или OR.
Примечание: для обозначения расстояния от точки А до начала координат используется промежуточная переменная h.
_Программа на Паскале_
var х, у, rl, г2: real;
h: real;
begin readln (x, y, rl, r2); h ~ sqr (x*x + y*y); if(h>rl)AND(h<r2) then
writeln ('точка А лежит внутри кольца');
end
575.C1. Требовалось написать программу, которая определяет, лежит ли точка А(х0,у0) внутри тре- угольной области, ограниченной осями координат и прямой у = 2 - х («внутри» понимается в строгом смысле, т.е. случай, когда точка А лежит на границе области, недопустим). В результате программа должна выводить соответствующее текстовое сообщение. Про- граммист сделал в программе ошибки.
____Программа на Паскале_-
var х0, у0, у: real; begin
readln (х0, у0); if(x0<2) then begin
if(x0>0) then
begin
y = 2-x0;
if (у0 < y) then writeln ('точка лежит внутри области')
else writeln ('точка не лежит внутри области');
end;
else writeln ('точка не лежит внутри области');
end;
writeln ('точка не лежит внутри области'); end.
Последовательно выполните задания:
1) Приведите пример таких чисел х0 и у0, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы).
3) Укажите, как можно доработать программу, чтобы вместо вложенных операторов IF она содержала логическую операцию AND.
5
76.С1.
Требовалось написать программу, которая
вводит с клавиатуры координаты точек
на плоскости (х, у — действительные
числа) и определяет принадлежность
точки заштрихованной на рисунке области,
включая её границы. Программист торопился
и написал программу неправильно.
Паскаль
var х,у: real; begin
readln(x, у) ; if y<=x*x then if x<=3 then if y>=0 then
write('принадлежит’) else
write('не принадлежит');
end.
Последовательно выполните следующее:
1) приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу;
2) укажите, как нужно доработать программу, чтобы не было случа- ев её неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.)
577.С1. Информация на чистый перезаписываемый CD-диск записывается от центра к краям, при этом область данных на диске образует коль- цо, площадь которого пропорциональна объёму записанной информации. Известно, что на диске, вмещающем до 700 МБ данных, внутренний диа- метр области записи равен 44 мм, а внешний диаметр — 117 мм. Требо- валось написать программу, которая бы по введённому объёму данных в мегабайтах оценивала бы внешний диаметр области записанных данных. Программист торопился и написал программу неправильно. Предложите вариант исправления программы.
Паскаль_
const pi - 3.1416; dl = 44*44;
var S,V,d2: real;
begin
readln (V);
if (V<0) or (V>700) then
writeln('Неверный объём!'); S:«pi*(117*117-dl)/4; S:«=V*S/700; d2:*sqrt(dl+4*pi/S); writeln(d2); end.
578.С1. Требовалось написать программу, которая по введённому числу п (2 < п < 100) выводит без повторений все трёхэлементные подмно- жества множества чисел{1,2,..., п}. Программист торопился и написал программу неправильно. Укажите на ошибки и помогите исправить про- грамму.
Паскаль_
var n, i, j, k : integer; begin
readln (n); for i := 1 to n do for j :s 1 to n do for k := 1 to n do
writeln(i:4, j:4, k:4);
end.
579.С1. Требовалось написать программу, которая определяет, лежит ли точ- ка Р с координатами (х, у) в первом квадранте декартовой координатной плоскости и на прямой у = а*х + b. При положительном ответе програм- ма должна выводить расстояние от этой точки до начала координат; при отрицательном — нужно вывести координаты точки, лежащей на прямой и имеющей такую же ординату, что и точка Р. (Гарантируется, что во вход- ных данных а≠0.) Была написана следующая программа:
Паскаль
var a, b, х, у: real; begin
readln(a,b,x,y); if a*x+b=y then if x>=0 then if y>=0 then writeln('Расстояние от точки до начала к-т=', sqrt(x*x+y*y)) else writeln('Координаты точки на прямой =’, (у-b)/а, у)
end.
Известно, что программа написана с ошибками. Последовательно вы- полните два задания:
1) приведите пример таких чисел о, 6, х, у, при которых программа не- верно решает поставленную задачу,
2) укажите, как, по вашему мнению, нужно доработать программу, что- бы не было случаев её неправильной работы.
580.С1. Требовалось написать программу, которая определяет, имеется ли среди введённых с клавиатуры положительных целых чисел а и Ь хотя бы одно чётное. Была написана следующая программа: |
Паскаль | var а, b: integer; begin
readln(a, b); а:=а mod 2;
if a>0 then b:=b mod 2; if b>0 then writeln('чётных чисел нет') else writelnСчетное число есть'); end.
Известно, что программа написана с ошибками. Последовательно вы- полните три задания:
1) приведите пример таких чисел а, 6, при которых программа неверно решает поставленную задачу;
2) укажите, как, по вашему мнению, нужно доработать программу, что- бы не было случаев её неправильной работы;
3) укажите, как можно доработать программу, чтобы она содержала логическую операцию OR
590.С1. Требовалось написать программу, получающую на входе три любых действительных числа. Программа должна проверить, является ли тре- угольник с длинами введённых сторон прямоугольным. Программист на- писал программу с ошибками. Выполните следующее:
1) укажите тройку чисел, для которых программа работает неверно;
2) укажите, как доработать программу.
Паскаль_
var a, b, с:real; begin
readln(a,b,c);
if (a>0) and (b>0) and (c>0) then if (a*a+b*b*c*c) and (a*a+c*c-b*b) and (b*b+c*c=a*a) then
wr itleIn('прямоугольный ‘) else
writeln ('не прямоугольный’)
end.
5
91.С1.
Требовалось написать программу, которая
принимает координаты точки на плоскости
{х, у — действительные числа) и определяет
принадлежность точки заштрихованной
области (включая её границы) на рисунке
27.
Программист торопился и написал программу неправильно.
Паскаль
var x,y:real; begin
readln(x, y)
if (x<=0) and (x>=-l) and (y>=x*x*x) then
writleIn('принадлежит') if (x>=0) and (x<=1 ) and (y<- x*x*x) then
writleln('принадлежит') else writeln ('не принадлежит') end.
Последовательно выполните следующее:
1) приведите пример таких чисел (х, у), для которых программа непра- вильно решает задачу;
2) укажите, как можно доработать программу, чтобы не было случаев неправильной её работы. (Существует несколько вариантов сделать это, в ответе укажите любой из них.)
592.С1. Требовалось написать программу, которая вводит с клавиатуры коор- динаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая её границы (см. рис. 37).
Программист торопился и написал программу неправильно.
П
аскаль_
var х,у:real; begin
readln(x,y); if x*x+y*y<-9 then if ,y>x*x then write ('принадлежит’) else write('He принадлежит');
end.
Последовательно выполните следующее:
1) приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу;
2) укажите, как нужно доработать программу, чтобы не было случа- ев её неправильной работы (это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
5
93.С1.
Требовалось написать программу, которая
вводит с клавиатуры координаты точки
на плоскости (x,
у — действительные числа) и
определяетпринадлежность точки
заштрихованной области, включая её
границы .
Программист торопился и написал программу неправильно. Паскаль_
var x, y: real; begin
readln(x, y); if x>=y then if y>=x*x-3 then write(‘ принадлежит’) else write('He принадлежит’);
end.
Последовательно выполните следующее:
1) приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу;
2) укажите, как нужно доработать программу, чтобы не было случа- ев её неправильной работы (это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
594.С1. Требовалось написать программу, которая проверяет, является ли данное положительное целое число, не превосходящее 32000, палиндро- мом, то есть таким, десятичная запись которого читается одинаково сле- ва направо и справа налево. Предполагается, что исходное число всегда вводится корректно. Программист торопился и написал программу непра- вильно.
_Паскаль_
var N,i,j : integer;
С : array [1..5] of integer;
flag : boolean; begin
readln(N);
i:=0;
repeat i:=i+l; C[i] :=N mod 10 ; N:=N div 10;
until N=0;
flag:=true;
for j:=l to i div 2 do if C[j]<>C[i-j] then flag:efalse; if flag then vriteln('Aa') else writeln('Hex'); end.
Последовательно выполните три задания:
1) Приведите пример таких чисел, для которых программа правиль- но решает задачу, и таких чисел, для которых программа неверно решает задачу.
2) Устраните ошибку.
3) Укажите, как нужно доработать эту программу, чтобы избежать лишних сравнений.
595.С1. Требовалось написать программу, которая проверяет, является ли данное положительное целое число, не превосходящее 32000 таким, в де- сятичной записи которого каждая следующая цифра больше предыдущей. Предполагается, что исходное число всегда вводится корректно. Про- граммист торопился и написал программу неправильно.
Паскаль
var N,a : integer;
f : boolean; begin readln (N); repeat a:- N mod 10; N:=N div 10; if a<=(N div 10)then f:*false; until N=0; if f then vriteln('Дa') else
writeln(‘Heт’); end.
Последовательно выполните три задания:
1) Приведите пример таких чисел, для которых программа правиль- но решает задачу, и таких чисел, для которых программа неверно решает задачу.
2) Устраните ошибку.
3) Укажите, как нужно доработать эту программу, чтобы избежать лишних сравнений.
596.С1. Требовалось написать программу, которая решает уравнение ау/х = Ь относительно х для любых чисел а и 6, введённых с клавиатуры. Все числа считаются действительными. Программист торопился и написал програм- му неправильно.
Паскаль var a,b,r : real; begin readln(a,b) ; if a=0 then begin
if b=0 then writeln('Любое x>=0>) else writeln('Heт решений’);
end
else begin
r:=b/a; vriteln(‘x=>’, r*r); end end.
Последовательно выполните два задания:
1) Приведите пример таких чисел, для которых программа правиль- но решает задачу, и таких чисел, для которых программа неверно решает задачу.
2) Укажите, как нужно доработать эту программу, чтобы исправить ошибку.
597.С1. Требовалось написать программу, которая решает уравнение ох4 = b относительно х для любых чисел а и 6, введённых с клавиатуры. Все числа считаются действительными. Программист торопился и написал програм- му неправильно.
_Паскаль_
var a,b,r : real; begin
readln(a,b);
if a=0 then
if b=0 then writeln('Любое x’) else write('Heт решений'); else
if b=0 then writeln ('x-0’)
else
begin
r: =exp (0.25*ln(b/a) ); writeln('xl=',r,' x2=’,-r); end end.
Последовательно выполните два задания:
1) Приведите пример таких чисел, для которых программа правильно решает задачу и таких чисел, для которых программа неверно решает за- дачу.
2) Укажите как нужно доработать эту программу, чтобы исправить ошибку.
598.С1. Требовалось написать программу, получающую на входе три любых действительных числа. Программа должна проверить, существует ли тре- угольник с указанными длинами сторон.
Программист написал программу с ошибками. Выполните следующее:
1) Укажите тройку чисел, для которых программа работает неверно.
2) Укажите, как доработать программу.
Паскаль
var a,b,c: real; begin
readln(a,b,c);
if (a>0) and (b>0) and (c>0) then
if (a+b>c) and (a+c>b) and (b+c>a) then writeln(‘ существует’)
else
writeln(‘не существует’);
end.
599.С1. Требовалось написать программу, которая считывает с клавиатуры целое число и выдаёт его наименьший натуральный простой делитель в случае, если введённое число по абсолютной величине больше единицы. В противном случае программа должна выдать сообщение об ошибочном вводе.
Программист написал такую программу:
Паскаль
var k,n: integer; begin
readln(n);
if (n=0) and (n=l) and (n=-l) then writeln('Ошибка ввода')
else begin k:=2;
while(n mod k)<>0 do k:-k+l; writeln(k); end;
end.
Выполните следующее:
1. Приведите пример n, при котором программа работает неверно.
2. Укажите, как доработать программу.
600.С1. Требовалось написать программу, которая по введённому с клавиату- ры номеру года (g — целое число, 100 < д < 9000) определяет номер его столетия (в григорианском календаре 1-й год является началом 7-го ве- ка, а 100-й год — концом 7-го века). Программист торопился и написал программу неправильно.
Паскаль
var g,z,с:integer; begin
readln(g);
z:=g div 100;
с:=z+l;
writeln('Столетие ‘, с); end.
Последовательно выполните следующее:
1) Приведите пример таких годов, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы.
601.С1. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х,у — целые числа) и определяет принадлежность точки заштрихованной области, включая её границы .
Программист торопился и написал программу неправильно.
Паскаль_
v
ar
x,y : real;
begin
readln(x,у);
if
y<=3 then
if x>=0 then
if y>=abs(x)-3 then
writeln('ПРИНАДЛЕЖИТ')
else
writeln('HE ПРИНАДЛЕЖИТ')
end.
Выполните следующее:
1. Приведите пример таких чисел x, у при которых программа неверно решает поставленную задачу
2. Укажите, как нужно доработать программу, чтобы не было случа- ев её неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.)
602.С1. Требовалось написать программу, которая вводит с клавиатуры эле- менты двухмерного массива размером n х n и упорядочивает элементы первой строки массива по убыванию. Программист торопился и написал программу неправильно.
Паскаль__
const n=5;
var A: array[1. .n,l. .n] of integer;
i,j,c:integer;
begin
for i:=l to ndo for to n do readln(A[i,j]); for i:=l to n do
for j:=i to n-1 do begin
c:=A[lfj] ;
if A[l,j]<A[l,j+l] then
A[l,j]:-A[l,j+1]; A[l,j+l]:-c
end end.
Выполните следующее:
1. Приведите пример таких чисел а11, а12, а13, а14 и а15 при которых программа работает неверно.
2. Укажите, как доработать программу, чтобы не было случаев её непра- вильной работы.
603.С1. Требовалось написать программу, которая вводит с клавиатуры по- следовательность целых чисел х1, x2,…xn, где n >= 3, и находит макси- мальную сумму двух соседних чисел.
Программист торопился и написал программу неправильно.
Паскаль_
const n=10;
var i,a,d,b:integer; с:array[1..n] of integer; begin
for i:=l to n do readln(c[i]); d:=0;
for i:=2 to n-2 do begin
b:=c [i] +c [i+1] ; a: =c [i+1] +c [i+2] ; if a<b then d:=b else d:=a; end;
writeln('max_sum',d); end.
Выполните следующее:
1. Приведите пример последовательности чисел, для которых про- грамма работает неверно.
2. Укажите, как доработать программу, чтобы не было случаев её непра- вильной работы.