4.1. Вычисление сумм и произведений элементов массиваОперации, выполняемые с элементами массива, соответствуют операциям, которые выполняются над базовым типом элементов массива (пример 4.1). Пример 4.2. Задан одномерный массив из целых чисел. Найти сумму и произведение элементов этого массива. I. Исходные данные: массив a и количество элементов n. II. Результат: S — сумма элементов и P — произведение элементов массива. III. Алгоритм решения задачи.
IV. Описание переменных: a — array[1..10] of integer; n, S, P — integer. Пример 4.3. Известны отметки по информатике всех учащихся 10 Б класса за первую четверть. Успеваемость в классе будем считать хорошей, если средний балл больше 7, плохой, если средний балл ниже 4, в остальных случаях — успеваемость средняя. Определить успеваемость класса по заданным отметкам. I. Исходные данные: массив a для хранения отметок и количество учащихся n. II. Результат: одно из слов — «хорошая», «средняя», «плохая» в зависимости от значения среднего балла. III. Алгоритм решения задачи.
IV. Описание переменных: a — array[1..30] of integer; n, S — integer; Sr — real. 4.2. Вычисление сумм и произведений при работе с двумя массивамиПример 4.4. На складе хранятся товары. Для каждого вида товара известно количество единиц товара и цена за единицу товара. Определить суммарную стоимость всех товаров, хранящихся на складе. I. Исходные данные: Cen — одномерный массив для хранения цены единицы товара каждого вида, Kol — массив для хранения количества товара каждого вида, n — количество видов товаров. II. Результат: Sum — значение суммарной стоимости товаров на складе. III. Алгоритм решения задачи.
IV. Описание переменных: Cen, Kol — array[1..50] of integer; n, Sum — integer. 4.3*. Использование массива, элементы которого являются константамиПример 4.5. Задано натуральное число n (n < 5000). Определить, является ли это число простым. I. Исходные данные: n — натуральное число. II. Результат: вывод сообщения «простое» или «составное». III. Алгоритм решения задачи.
IV. Описание переменных: s_n — const array of integer; n,i — integer. 4.4. Построение круговой
|
Пример 4.1. Если базовым типом элементов массива является тип integer, то для элементов массива допустимы следующие операции: +, -, *, div, mod. Если в массиве хранятся числа типа real, то допустимыми будут операции + — * / Если в массиве хранятся строки, то для каждого его элемента допустимы строковые функции и процедуры. Пример 4.2. var a: array[1..10] of integer;
n, S, P: integer;
begin
write ('Введите n = ');
readln(n);
writeln('Вводите элементы');
for var i := 1 to n do read(a[i]);
S := 0;
P := 1;
for var i := 1 to n do
begin
S := S + a[i];
P := P * a[i];
end;
writeln('Сумма = ', S);
writeln('Произведение = ', P);
end.
VI. Тестирование. VII. Анализ результатов. Проверить правильность вычислений можно на калькуляторе. Пример 4.3. var a: array[1..30] of integer;
n, S: integer;
Sr: real;
begin
write('Количество учащихся ');
readln(n);
writeln('Вводите отметки');
for var i := 1 to n do read(a[i]);
S := 0;
for var i := 1 to n do
S := S + a[i];
Sr := S / n;
if Sr > 7 then
writeln( 'Хорошая')
else
if Sr < 4 then
writeln( 'Плохая')
else
writeln( 'Средняя');
end.
VI. Тестирование.
var Kol, Cen: array[1..50] of integer;
n, Sum: integer;
begin
write ('Введите количество видов товаров ');
readln(n);
for var i := 1 to n do
begin
writeln('Введите количество товара ', i, ' и его цену ');
read(Kol[i], Cen[i]);
end;
Sum := 0;
for var i := 1 to n do
Sum := Sum + Kol[i]*Cen[i];
writeln('Суммарная стоимость товаров = ', Sum);
end.
VI. Тестирование.
const s_n: array of integer = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 1, 37, 41, 43, 47, 53, 59, 61, 67, 71);
var n,i: integer;
begin
writeln('Введите число');
read(n);
i := 0;
while (s_n[i] * s_n[i] <= n) and (n mod s_n[i] <> 0) do
i := i + 1;
if s_n[i]*s_n[i] > n then writeln( 'Простое')
else writeln ('Составное')
end.
VI. Тестирование.
Пример 4.6. uses graphABC;
var a: array[1..10] of integer;
n, S, u0, u1: integer;
begin
write(ꞌКоличество n = ꞌ);
readln(n);
writeln(n);
writeln(ꞌЭлементы массиваꞌ);
for var i := 1 to n do
read(a[i]);
for var i := 1 to n do
write(a[i], ꞌ ꞌ);
S := 0;
for var i := 1 to n do
S := S + a[i];
u0 := 0;
for var i := 1 to n do
begin
u1:= u0+trunc(a[i]*360/S);
SetBrushColor(clRandom);
Pie(150,150,100,u0,u1);
u0 := u1;
end;
end.
VI. Тестирование. VII. Постройте по этим данным диаграмму в Excel и сравните. Для задания цвета сектора можно использовать массив, содержащий цветовые константы: const d_color: array [1..10] of Color = (clRed, clOrange, clYellow, clLightGreen, clGreen, clTeal, clBlue, clDarkViolet, clMagenta, clPink);
Команду задания цвета сектора нужно будет заменить на: SetBrushColor(d_color[i]);
Результат:
|
1. Какие операции допустимы для элементов массива целых чисел?
2. Какие операции допустимы для элементов массива вещественных чисел?
3. Как записать данные в массив констант?
Упражнения
1. Для задачи из примера 4.2 выполните перечисленные задания.
- Заполните таблицу.
- Добавьте в таблицу свои значения n и a.
- Попытайтесь подобрать такие значения элементов массива, чтобы S = P, для n = 2,5.
- Для n = 10 ввели все элементы массива, равные 9. Какой результат
получили? Почему? Что нужно исправить в программе для получения
правильного результата?
2. Для задачи из примера 4.3 добавьте вывод среднего балла.
3. В ходе хоккейного матча удалялись игроки обеих команд. Для каждого удаленного игрока известно время его отсутствия на поле. Определите, какая из команд провела больше времени на скамейке штрафников.
4. Для задачи из примера 4.5 выполните следующее задание:
Введите число 5557. Почему появилась ошибка? Дополните массив констант простыми числами так, чтобы программа могла выдавать ответ для чисел, меньших 10 000. (Для этого можно воспользоваться самой программой или таблицей простых чисел.)
5. Для задачи из примера 4.6 выполните перечисленные задания.
1. Внесите в программу изменения так, чтобы цвет сектора выбирался из массива констант.
2*. Измените программу так, чтобы диаграмма всегда строилась в центре графического окна. Диаметр круга определяется меньшей из двух величин — шириной или высотой окна.
6.* В массивах X и Y хранятся координаты точек. Постройте многоугольник, заданный этими координатами. Запросите у пользователя номера двух точек и постройте диагональ многоугольника, соединяющую эти точки.