- •Контрольная работа № 2 Массивы
- •Типовые алгоритмы обработки массивов
- •1. Инвертирование массива
- •Циклический сдвиг элементов массива вправо (влево) на м позиций
- •3. Поиск минимального (максимального) элемента
- •4. Сортировка массива
- •Формирование нового массива из элементов исходного массива
- •Поиск элемента в массиве
- •Образцы решения задач:
- •Анализ постановки задачи
- •Текст программы
- •Требования:
- •Варианты контрольной работы:
Анализ постановки задачи
Исходным данным для решения задачи является массив температур temper.
Введем обозначения объектов алгоритма:
day - массив названий дней недели; sum – сумма температур за неделю; sredn - средняя температура за неделю; i - переменная для организации цикла.
Для решения данной задачи необходимо организовать цикл с параметром. В цикле суммировать все элементы массива temper, после выхода из цикла найти среднее значение температуры и выдать результат, т.о. необходимо использовать типовой алгоритм – суммирование элементов массива.
Текст программы
PROGRAM mid_temp;
const n=7;
VAR
day :array[1..n] of string [11]; {названия дней недели}
temper :array[1..n] of real; {температура}
sum :real; {сумма температур за неделю}
sredn :real; {средняя температура за неделю}
i :integer;
BEGIN
day[1]:='Понедельник';
day[2]:='Вторник';
day[3]:='Среда';
day[4]:='Четверг';
day[5]:='Пятница';
day[6]:='Суббота';
day[7]:='Воскресенье';
writeln('Задайте температуру воздуха за неделю.');
for i:=1 to n do
begin
write(day [i],'->');
readln(temper[i])
end;
{ Вычисление средней температуры за неделю}
sum:=0;
for i:=1 to n do sum:=sum + temper [i];
sredn:=sum/n;
writeln ('Средняя температура за неделю:',sredn:6:2)
END.
Требования:
оформить задачи в соответствии с образцом;
написать комментарии к основным моментам программного кода (для всех задач);
для проверки функционирования программного кода подготовить несколько тестов.
Варианты контрольной работы:
Вариант № 1
Напишите программу печати таблицы перевода расстояний из дюймов в сантиметры для значений длин от 1 до 20 дюймов. 1 дюйм = 2,54 см.
2. Опишите, что получится в результате выполнения программы?
Program Variantl; Const n=7;
Var С : Array[1..n] Of Integer;
i: Byte; p : Integer;
Begin
p:=0;
For i:=1 To n Do Begin
C[i]:=-50+Random(151);
If C[i]>50 Then p:=p+C[i];
End;
Writeln(p);
End.
На автобазе N автомашин, для которых известен пробег (в тыс. км) за год. Задавшись расходом бензина на одну тысячу км для каждой машины, подсчитать общее количество бензина, израсходованное на автобазе и его стоимость.
Вариант № 2
Напишите программу вывода всех четных чисел от 2 до 100 включительно.
2. Опишите, что получится в результате выполнения программы?
Program Variant!; Const n=10;
Var D : Array[1..n] Of Integer;
i: Byte; p : Integer;
Begin
p:=0;
For i:=l Ton Do Begin
D[i]:=-25+Random(51);
If D[i]<0 Then p:=p+D[i];
End;
Writeln(p);
End.
3. Известно количество деталей, произведенных каждым из 40-ка рабочих. Сколько рабочих имеют производительность ниже средней?
Вариант № 3
Составьте программу, вычисляющую сумму квадратов всех чисел от 1 до N.
2. Опишите, что получится в результате выполнения программы?
Program Variant3; Const n=17;
Var B: Array[1..n] Of Integer;
i: Byte; p : Integer;
Begin
p:=0;
For i:=1 To n Do
Begin
B[i]:=-35+Random(121);
If C[i] Mod 10=0 Then p:=p+1;
End;
Writeln(p);
End.
3. Имеется две последовательности показателей: одна — плановых, другая — фактических трудоемкостей K изделий. Определить, у скольких изделий фактическая трудоемкость ниже плановой.
Вариант № 4
Напишите программу, которая требует у вас пароль, например 111. Если пароль правильный, то заполняет все строки экрана сообщением «Молодец». Если после пятой попытки пароль все равно неверен, выходит из программы.
2. Опишите, что получится в результате выполнения программы?
Program Variant4;
Const n =25;
Var A: Array[1..n] Of Integer;
i: Byte; p: Integer;
Begin
p:=0;
For i:=1 To n do
Begin
A[i]:=-50+Random(151);
if A[i]<=10 Then p:=p+A[i]; End;
Writeln(p);
End.
3. Известно количество голосов, поданных за каждого из 8-х кандидатов на пост мэра Магнитогорска. Выяснить, избран ли мэр, если для избрания требуется набрать вдвое больше голосов, чем количество голосов, поданных за всех остальных кандидатов вместе взятых. Если избран, то вывести фамилию мэра.
Вариант № 5
В ЭВМ вводятся по очереди координаты N точек. Определить, сколько из них попадает в круг радиусом R с центром в точке (a,b).
2. Опишите, что получится в результате выполнения программы?
Program Variants; Const n=12;
Var С: Array[1..n] Of Integer ;
i: Byte; p : Integer;
Begin
p:=0;
For i:=1 To n Do Begin
C[i]:=-25+Random(71);
If C[i] Mod 3=0 Then p:=p+1;
End;
Writeln(p);
End.
3. Дан список оценок по математике 30-ти абитуриентов. Кого больше: троечников, четверочников или пятерочников?
Вариант № 6
Каждая бактерия делится на две в течение одной минуты. В начальный момент имеется одна бактерия. Составьте программу, которая рассчитывает количество бактерий на заданное вами целое значение момента времени (15 минут, 7 минут и т.п.).
2. Опишите, что получится в результате выполнения программы?
Program Variant4;
Const n =25;
Var A: Array[1..n] Of Integer;
i: Byte; p: Integer;
Begin
p:=1;
For i:=1 To n do
Begin
A[i]:=-50+Random(151);
if A[i]<=10 Then p:=p*A[i]; End;
Writeln(p);
End.
3. В городе N магазинов. О каждом магазине известен ежемесячный доход и расход магазина. Вывести номера магазинов, у которых расход превысил доход.
Вариант № 7
1. Найти сумму всех чисел из промежутка от А до В, кратных 13 и 5 (А и В вводятся с клавиатуры).
2. Опишите, что получится в результате выполнения программы?
Program Variant4;
Const n =25;
Var A: Array[1..n] Of Integer;
i: Byte; p: Integer;
Begin
p:=0;
For i:=1 To n do
Begin
A[i]:=-20+Random(101);
if A[i]mod 2=0 Then p:=p+A[i];
End;
Writeln(p);
End.
3. Заданы списки почасовых тарифных ставок 20-ти рабочих, а также количество часов, отработанных каждым из этих рабочих. Определить общую сумму к оплате и номер рабочего, получившего наибольшую зарплату.
Вариант № 8
1. Найти все двузначные числа, которые при умножении на 2 заканчиваются на 8, а при умножении на 3 - на 4.
2. Опишите, что получится в результате выполнения программы?
Program Variant!; Const n=10;
Var D : Array[1..n] Of Integer;
i: Byte; p : Integer;
Begin
p:=0;
For i:=l Ton Do Begin
D[i]:=Random(51);
If (D[i]>5) and (D[i]<25) Then p:=p+D[i];
End;
Writeln(p);
End.
3. Известны фамилии и суммарный балл, полученный каждым из N абитуриентов на вступительных экзаменах. Выдать список абитуриентов в порядке убывания их балла.
Вариант № 9
1. Найти произведение всех чисел из промежутка от А до В, кратных 2 или 3 (А и В вводятся с клавиатуры).
2. Опишите, что получится в результате выполнения программы?
Program Variants; Const n=12;
Var С: Array[1..n] Of Integer ;
i: Byte; p : Integer;
Begin
p:=0;
For i:=1 To n Do Begin
C[i]:=Random(101);
If C[i] Mod 5=0 Then p:=p+ C[i];
End;
Writeln(p);
End.
3. Ежедневно в течение июня измерялся уровень воды в реке Урал, данные занесли в одномерный массив. Определить, в какие дни наблюдался самый высокий уровень (и какой), указать номера декад, к которым относятся эти дни (в июне 3 декады по 10 дней).
Вариант № 10
1. Найти все трехзначные числа, которые при умножении на 3 заканчиваются на 5 или 7.
2. Опишите, что получится в результате выполнения программы?
Program Variant4;
Const n =25;
Var A: Array[1..n] Of Integer;
i: Byte; p: Integer;
Begin
p:=0;
For i:=1 To n do
Begin
A[i]:=Random(101);
if (A[i]mod 3=0) and (A[i]mod 5=0) Then p:=p+1;
End;
Writeln(p);
End.
3. Известны сведения о количестве осадков (в мм) за каждый день марта текущего года. Напечатать дни, когда было превышено среднемесячное количество осадков.
