Контрольная работа
Алгоритмы обработки массивов
Вариант 1
(2 балла) 1. Назовите вид сортировки массива: «Дана последовательность чисел. Требуется переставить элементы так, чтобы они были расположены по убыванию. Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый - на место наибольшего. Затем, начиная со второго, эта процедура повторяется».
А) сортировка обменами; Б) сортировка выбором;
В) сортировка вставками; Г) сортировка Шелла.
(4 балла) 2. а) Что выполняет фрагмент программы:
for (int i = 0; i
a[i] = rand() % 100;
cout
б) Напишите фрагмент программы сортировки обменами элементов массива.
(6 баллов) 3. Дан массив из 5 целых чисел. Числа вводятся с клавиатуры. Составить программу вычисления разности между произведением и суммой элементов массива. В выходные данные выводится одно число – разность между произведением и суммой элементов массива.
№ теста | Входные данные | Выходные данные |
1 | 5 1 2 1 2 1 | -3 |
2 | 5 1 2 3 1 1 | -2 |
(8 баллов) 4. Задайте массив из 10 элементов и найдите сумму и количество элементов, которые кратны 3 и оканчиваются на 5.
Входные данные: первое число – количество элементов в массиве.
Выходные данные: первое число – сумма, второе число – количество.
№ теста | Входные данные | Выходные данные |
1 | 5 3 5 15 45 105 | 165 3 |
2 | 10 1 2 5 15 45 105 75 8 9 4 | 240 4 |
(10 баллов) 5. Составьте программу, которая задает массив целых чисел и находит среднее арифметическое элементов с четными значениями и нечетными индексами.
Входные данные: первое число – количество элементов в массиве.
№ теста | Входные данные | Выходные данные |
1 | 5 2 1 6 8 3 | 5 |
2 | 5 1 2 3 4 5 | 3 |
Шкала выставления отметки
1б | 2б | 3б | 4б | 5б | 6б | 7б | 8б | 9б | 10б |
1 | 2 | 3-5 | 6-8 | 9-11 | 12-14 | 15-18 | 19-23 | 24-28 | 29-30 |
Контрольная работа
Алгоритмы обработки массивов
Вариант 2
(2 балла) 1.Назовите вид сортировки массива: «Дана последовательность чисел a1, a2,...an. Требуется переставить числа в порядке возрастания. Для этого сравниваются два соседних числа ai и ai+1. Если aiai+1, то делается перестановка. Так продолжается до тех пор, пока все элементы не окажутся расположенными в порядке возрастания».
А) сортировка обменами; Б) сортировка выбором;
В) сортировка вставками; Г) сортировка Шелла.
(4 балла) 2. а) Что выполняет фрагмент программы:
for (int i = 0; i
cout a[i]
б) Напишите фрагмент программы сортировки выбором элементов массива.
(6 баллов) 3. Дан массив из N элементов. Найдите сумму элементов с четными номерами и найдите отдельно произведение с нечетными номерами. В выходных данных первое число выводится сумма элементов с четными индексами, второе число – произведение элементов с нечетными номерами.
№ теста | Входные данные | Выходные данные |
1 | 6 1 2 3 4 5 6 | 8 48 |
2 | 5 1 1 2 2 3 | 6 2 |
(8 баллов) 4. Задайте массив из 10 элементов и найдите сумму и количество элементов, которые кратны 7 и оканчиваются на 6.
Входные данные: первое число – количество элементов в массиве.
Выходные данные: первое число – сумма, второе число – количество.
№ теста | Входные данные | Выходные данные |
1 | 5 56 13 5 126 3 | 182 2 |
2 | 5 1 2 196 56 126 | 378 3 |
(10 баллов) 5. Составьте программу, которая заполняет массив числами, вводимыми с клавиатуры, находит минимальный элемент массива среди элементов с четными индексами и находит максимальный элемент среди элементов с нечетными индексами.
Входные данные: первое число – количество элементов в массиве.
Выходные данные: первое число – минимальное число, второе число – максимальное число.
№ теста | Входные данные | Выходные данные |
1 | 5 2 4 8 1 5 | 2 4 |
2 | 7 1 7 8 2 3 5 9 | 1 7 |
Шкала выставления отметки
1б | 2б | 3б | 4б | 5б | 6б | 7б | 8б | 9б | 10б |
1 | 2 | 3-5 | 6-8 | 9-11 | 12-14 | 15-18 | 19-23 | 24-28 | 29-30 |
Решение задач
Вариант 1
(6 баллов) 3. Дан массив из 5 целых чисел. Числа вводятся с клавиатуры. Составить программу вычисления разности между произведением и суммой элементов массива. В выходные данные выводится одно число – разность между произведением и суммой элементов массива.
№ теста | Входные данные | Выходные данные |
1 | 5 1 2 1 2 1 | -3 |
2 | 5 1 2 3 1 1 | -2 |
#include
using namespace std;
int main()
{
int n;
cinn;
int a[n];
for(int i=0;i
cina[i];
int s=0; int p=1;
for(int i=0;i
{s=s+a[i];
p=p*a[i];}
int r=p-s;
cout
return 0;
}
(8 баллов) 4. В двумерном массиве найти наибольший элемент, лежащий на главной диагонали.
Входные данные: два первых числа вводится размерность массива – количество строк и столбцов.
№ теста | Входные данные | Выходные данные |
1 | 3 3 1 2 3 4 5 6 7 8 9 | 9 |
2 | 2 2 1 9 8 7 | 7 |
#include
#include
using namespace std;
int main()
{
int n,m;
cinn;
cinm;
int a[n][m];
for(int i=0;i
{ for(int j=0;j
cina[i][j];}
int max=a[0][0];
for(int i=1;i
for(int j=1;j
if ((i=j)&&(a[i][j]max))
{
max=a[i][j];
}
cout
return 0;
}
(10 баллов) 5. Составьте программу, которая задает массив целых чисел и находит среднее арифметическое элементов с четными значениями и нечетными индексами.
Входные данные: первое число – количество элементов в массиве.
№ теста | Входные данные | Выходные данные |
1 | 5 2 1 6 8 3 | 5 |
2 | 5 1 2 3 4 5 | 3 |
#include
using namespace std;
int main()
{
int n;
cinn;
int a[n];
for(int i=0;i
cina[i];
int s=0; int k=0;
for(int i=0;i
if (a[i]%2==0)
{s=s+a[i];
k=k+1;}
int s1=0; int k1=0;
for(int i=0;i
if (i%2==1)
{s1=s1+a[i];
k1=k1+1;}
double sr;
sr=(s+s1)/(k+k1);
cout
cout
cout
cout
cout
return 0;
}
Вариант 2
(6 баллов) 3. Дан массив из N элементов. Найдите сумму элементов с четными номерами и найдите отдельно произведение с нечетными номерами. В выходных данных первое число выводится сумма элементов с четными индексами, второе число – произведение элементов с нечетными номерами.
№ теста | Входные данные | Выходные данные |
1 | 6 1 2 3 4 5 6 | 8 24 |
2 | 5 1 1 2 2 3 | 6 2 |
#include
using namespace std;
int main()
{
int n;
cinn;
int a[n];
for(int i=0;i
cina[i];
int s=0;
for(int i=0;i
if(i%2==0)
{s=s+a[i];
}
int p=1;
for(int i=0;i
if(i%2==1)
{p=p*a[i];
}
cout
cout
return 0;
}
(8 баллов) 4. В двумерном массиве вычислить суммы элементов, расположенных выше и ниже главной диагонали, результат вывести на экран.
Входные данные: два первых числа вводится размерность массива – количество строк и столбцов.
Выходные данные: первое число - сумма элементов, расположенных выше главной диагонали; второе число - сумма элементов, расположенных ниже главной диагонали.
№ теста | Входные данные | Выходные данные |
1 | 3 3 1 2 3 4 5 6 7 8 9 | 11 19 |
2 | 4 4 1 2 4 5 4 7 8 9 3 1 2 4 1 1 1 1 | 32 11 |
#include
#include
#include
using namespace std;
int main()
{
int n,m;
cinn;
cinm;
int a[n][m];
for(int i=0;i
{ for(int j=0;j
cina[i][j];}
int s=0;
for(int i=0;i
for(int j=0;j
if (ij)
s=a[i][j]+s;
int s1=0;
for(int i=0;i
for(int j=0;j
if (i
s1=a[i][j]+s1;
cout
cout
return 0;
}
(10 баллов) 5. Составьте программу, которая заполняет массив числами, вводимыми с клавиатуры, находит минимальный элемент массива среди элементов с четными индексами и находит максимальный элемент среди элементов с нечетными индексами.
Входные данные: первое число – количество элементов в массиве.
Выходные данные: первое число – минимальное число, второе число – максимальное число.
№ теста | Входные данные | Выходные данные |
1 | 5 2 4 8 1 5 | 2 4 |
2 | 7 1 7 8 2 3 5 9 | 1 7 |
#include
using namespace std;
int main()
{
int n; cinn; int a[n];
for(int i=0;i
cina[i];
int min=a[0];
for(int i=0;i
if ((i%2==0)&&(a[i]
{min=a[i];}
int max=a[0];
for(int i=1;i
if ((i%2==1)&&(a[i]max))
{max=a[i];}
cout
cout
return 0; }