Задания практических и самостоятельных работ
Заполнение массива А по критерию, по образцу или элементами другого массива В
- Натуральными числами
- Членами арифметической или геометрической прогрессии
- Случайными числами из промежутка
[a, b]
- Содержащий степени двойки от первой до n-ой: 2, 4, 8, 16, … .
- Числами Фибоначчи
- Чередующимися числами a и b
- Четными или нечетными числами
- Элементами с четными или нечетными индексами данного массива В
- Простыми числами
- Уникальными элементами данного массива В
- Элементами массива В в обратном порядке
Поиск (анализ) элементов
- Найти минимальный или максимальный элемент
- Максимальный четный или нечетный элемент
- Максимальный или минимальный элемент, который больше или меньше своих соседей (пила)
- Количество четных или нечетных элементов
- Количество меньших или больших k
- Позицию первого элемента большего или меньшего k
- Максимальный или минимальный элемент кратный k
- Позицию второго по значению элемента меньшего max или большего min
- Количество уникальных элементов
- Количество повторяющихся элементов
Изменение элементов. Статический массив. Применять вспомогательный массив запрещено
- Поменять местами четный и нечетный элементы
- Поменять местами соседние элементы (элементы с нечетными индексами становятся элементами с четными индексами):
0
-ой и 1
-ый, 2
-ой и 3
-ий и т. д.
- Развернуть массив
- Выполнить сортировку по убыванию или возрастанию методом пузырька
- В массиве, содержащем нули и единицы, сместить нули к началу массива
- Вторую половину массива заменить первой половиной (количество элементов четное)
- Поменять местами первую и вторую половину
- Отразить относительно центра элементы первой половины массива, т. е. сделать равными
i
и n - i - 1
, i + 1
и n - i - 2
- Осуществить циклический сдвиг элементов массива влево или вправо на одну позицию
- Вторую половину массива заменить развернутой первой половиной (количество элементов четное)
- Увеличить каждый элемент на исходное значение элемента
A[k]
Изменение элементов. Динамический массив
- После каждого элемента вставить элемент, имеющий значение k (при этом массив увеличится вдвое)
- Удалить элементы между элементами с индексами k и m
- После элемента массива с номером k вставить m новых элементов массива В
- Продублировать в массиве все элементы с четным или нечетным индексом
- Продублировать в массиве все четные или нечетные элементы
- Удалить из массива все соседние одинаковые элементы
- Удалить элементы равные k
- Утроить элементы равные k
- Добавить копию массива в конец
- После каждых 10 элементов вставить элемент, имеющий значение среднего арифметического этих элементов
Примеры решения задач
- Ввод и вывод массива. Дано целое число
N (> 0)
. Сформировать и вывести целочисленный массив размера N
, содержащий N
первых положительных нечетных чисел: 1, 3, 5, ...
.
#include <iostream>
using namespace std;
int main() {
int n;
cout << "n = "; cin >> n;
int mas[n];
for (int i = 0; i < n; i++) {
mas[i] = 2 * i + 1;
cout << mas[i] << ' ';
}
return 0;
}
k = 10
1 3 5 7 9 11 13 15 17 19
Анализ элементов массива. Дан целочисленный массив размера N, не содержащий одинаковых чисел. Проверить, образуют ли его элементы арифметическую прогрессию. Если образуют, то вывести разность прогрессии, если нет — вывести 0.
#include <iostream>
using namespace std;
int main() {
int mas[] {1, 3, 5, 7, 9, 11, 13, 15};
// Проверяем арифметическую прогрессию
int m = mas[1] - mas[0];
bool flag = true;
for (int i = 0; i < 7; i++) {
if (mas[i + 1] - mas[i] != m) {
flag = false;
break;
}
}
cout << (flag ? m : 0) << endl;
return 0;
}
Изменение массива. Дан массив размера N. Обнулить все его локальные максимумы (то есть числа, большие своих соседей).
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <array>
using namespace std;
int main() {
array<int, 50> mas;
array<size_t, 25> pos;
srand(time(0));
size_t j = 0;
// Заполняем массив и показываем
for (auto &ar : mas) {
ar = 10 + rand() % 90;
cout << ar << setw(3);
}
// Реализация
// Запоминаем где находятся эти локальные максимумы
for (size_t i = 1; i < mas.size() - 1; i++)
if (mas[i] > mas[i - 1] && mas[i] > mas[i + 1]) {
pos[j] = i;
j++;
}
// Заменяем их нулями
j = 0;
for (size_t i = 1; i < mas.size() - 1; i++)
if (i == pos[j]) {
mas[i] = 0;
j++;
}
// Показываем измененный массив
cout << "\nЭлементы измененного массива:" << endl;
for (auto &ar : mas)
cout << ar << setw(3);
return 0;
}
95 72 55 43 64 71 18 22 41 26 27 55 45 30 48 32 34 11 39 95 77 14 89 54 42 77 58 65 72 92 17 68 64 62 63 28 86 72 93 27 50 20 34 48 40 72 70 26 35 10
Элементы измененного массива:
95 72 55 43 64 0 18 22 0 26 27 0 45 30 0 32 0 11 39 0 77 14 0 54 42 0 58 65 72 0 17 0 64 62 0 28 0 72 0 27 0 20 34 0 40 0 70 26 0 10