Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х - действительное число) и определяется принадлежность этой точки одному из выделенных отрезков (включая границы). программист торопился и написал программу неправильно. 1. перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (а, в, с, d и е). границы (точки -5, 1, 7 и 13) принадлежат заштрихованным областям. в столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. в столбце «программа выведет» укажите, что программа выведет на экран. если программа ничего не выводит, напишите «—» (прочерк). если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». в последнем столбце укажите «да» или «нет». 2. укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (это можно сделать несколькими достаточно указать любой доработки исходной программы.)
var a:array[1..n] of integer;
i,s:integer; sr:real;
begin
Randomize;
writeln('Массив:');
for i:=1 to n do
begin
a[i]:=random(21);
write(a[i]:3);
end;
writeln;
s:=0;
for i:=1 to n do s:=s+a[i];
sr:=s/n;
writeln('Среднее арифметическое = ',sr:6:2);
writeln('Номера элементов, больших среднего арифметического:');
for i:=1 to n do
if a[i]>sr then write(i:3);
writeln;
end.
Пример:
Массив:
9 19 14 8 7 10 5 10 6 14 15 2 11 17 13
Среднее арифметическое = 10.67
Номера элементов, больших среднего арифметического:
2 3 10 11 13 14 15
begin
var a:=ArrRandom(ReadInteger('n='),1,99);
a.Println;
var k:=ReadInteger('k=');
Writeln('Сумма чисел, кратных ',k,': ',
a.Where(x->x mod k=0).Sum)
end.
Тестовое решение:
n= 18
45 17 36 15 65 17 97 44 49 43 60 51 66 72 18 55 71 85
k= 12
Сумма чисел, кратных 12: 168
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
var a:=ArrRandom(ReadInteger('n='),1,20);
a.Println;
a.Where((x,i)->x=i+1).Println
end.
Тестовое решение:
n= 16
17 2 1 14 20 19 10 3 9 15 14 4 2 7 2 16
2 9 16