- •Контрольная работа № 2 Массивы
- •Типовые алгоритмы обработки массивов
- •1. Инвертирование массива
- •Циклический сдвиг элементов массива вправо (влево) на м позиций
- •3. Поиск минимального (максимального) элемента
- •4. Сортировка массива
- •Формирование нового массива из элементов исходного массива
- •Поиск элемента в массиве
- •Образцы решения задач:
- •Анализ постановки задачи
- •Текст программы
- •Требования:
- •Варианты контрольной работы:
Образцы решения задач:
Задача 1.
В компьютер вводится информация: количество знаков в рекламе; на какой странице в газете будет печататься (если 1 или 4, то предоставляется скидка 50 %, если 2 или 3, то скидок нет); количество публикаций (если 2 публикации, то скидка 5 %, если 3 публикации, то скидка 10 %, если 4 публикации, то скидка 20 %, если > 5 публикации, то скидка 25 %). Необходимо определить стоимость рекламы с учетом всех скидок для нескольких клиентов.
Анализ постановки задачи.
Исходными данными для решения задачи является три целых числа и одно вещественное число.
Введем обозначения объектов алгоритма:
kol_zn – количество знаков в рекламе;
num_str – номер страницы на которой будет печататься реклама;
kol_pbl - количество публикаций;
stoim_zn – стоимость одного знака;
stoim_rk – стоимость рекламы;
i – счетчик (параметр цикла);
n – количество клиентов.
Для подсчета рекламы воспользуемся следующей формулой: stoim_rk= stoim_zn*kol_zn.
Далее воспользуемся алгоритмической структурой ветвления:
если num_str=1 или num_str=4, то предоставляется скидка 50 %, т.е. stoim_rk= stoim_rk/2;
если kol_pbl=2, то stoim_rk=stoim_rk-stoim_rk*0.05, иначе если kol_pbl=3, то stoim_rk=stoim_rk-stoim_rk*0.1, иначе если kol_pbl=4, то stoim_rk=stoim_rk-stoim_rk*0.2, иначе если kol_pbl>5, то stoim_rk=stoim_rk-stoim_rk*0.25.
Все действия необходимо выполнить в цикле, т.к. стоимость рекламы рассчитывается для нескольких клиентов.
Программный код на Free - Паскале:
Var kol_zn, num_str, kol_pbl, i, n : integer;
stoim_zn, stoim_rk : real;
Begin
Writeln(‘Введите количество клиентов);
Readln(n);
For i:=1 to n do
begin
Writeln(‘Введите количество знаков вашей рекламы’);
Readln(kol_zn);
stoim_zn:=20.50; {стоимость одного знака}
stoim_rk= stoim_zn*kol_zn; {стоимость рекламы}
Writeln(‘Введите номер страницы 1-4 на которой будет размещаться ваша реклама’);
Readln(num_str);
If (num_str=1) or (num_str=4) then stoim_rk= stoim_rk/2;
Writeln(‘Введите количество публикаций вашей рекламы’);
Readln(kol_pbl);
If kol_pbl=2 then stoim_rk=stoim_rk-stoim_rk*0.05
else If kol_pbl=3 then stoim_rk=stoim_rk-stoim_rk*0.1
else If kol_pbl=4 then stoim_rk=stoim_rk-stoim_rk*0.2
else If kol_pbl>5 then stoim_rk=stoim_rk-stoim_rk*0.25;
Writeln(‘Стоимость вашей рекламы=’, stoim_rk)
end;
End.
Задача 2. Опишите, что получится в результате выполнения программы?
Program Variantl;
Const n=7;
Var С : Array[1..n] Of Integer; {описан массив целых элементов, состоящий из 7 значений }
i: Byte; p : integer;
Begin
p:=0; {обнуление счетчика}
For i:=1 To n Do Begin {цикл формирования и обработки массива }
C[i]:=-25+Random(121); {формирование массива из элементов диапазона от -25до 95}
If (C[i]>20) and (C[i]<70) Then p:=p+C[i] {нахождение суммы элементов в диапазоне от 20до70 };
End;
Writeln(p);
End.
В результате выполнения программы будет сформирован массив целых значений в диапазоне от -25 до 95. А также вычислена сумма элементов, которые принадлежат отрезку от 20 до70.
Задача 3. Вычисление средней (за неделю) температуры воздуха.
Решение