Решение задач на линейные массивы

Задания практических и самостоятельных работ

Заполнение массива А по критерию, по образцу или элементами другого массива В
  1. Натуральными числами
  2. Членами арифметической или геометрической прогрессии
  3. Случайными числами из промежутка [a, b]
  4. Содержащий степени двойки от первой до n-ой: 2, 4, 8, 16, … .
  5. Числами Фибоначчи
  6. Чередующимися числами a и b
  7. Четными или нечетными числами
  8. Элементами с четными или нечетными индексами данного массива В
  9. Простыми числами
  10. Уникальными элементами данного массива В
  11. Элементами массива В в обратном порядке
Поиск (анализ) элементов
  1. Найти минимальный или максимальный элемент
  2. Максимальный четный или нечетный элемент
  3. Максимальный или минимальный элемент, который больше или меньше своих соседей (пила)
  4. Количество четных или нечетных элементов
  5. Количество меньших или больших k
  6. Позицию первого элемента большего или меньшего k
  7. Максимальный или минимальный элемент кратный k
  8. Позицию второго по значению элемента меньшего max или большего min
  9. Количество уникальных элементов
  10. Количество повторяющихся элементов
Изменение элементов. Статический массив. Применять вспомогательный массив запрещено
  1. Поменять местами четный и нечетный элементы
  2. Поменять местами соседние элементы (элементы с нечетными индексами становятся элементами с четными индексами): 0-ой и 1-ый, 2-ой и 3-ий и т. д.
  3. Развернуть массив
  4. Выполнить сортировку по убыванию или возрастанию методом пузырька
  5. В массиве, содержащем нули и единицы, сместить нули к началу массива
  6. Вторую половину массива заменить первой половиной (количество элементов четное)
  7. Поменять местами первую и вторую половину
  8. Отразить относительно центра элементы первой половины массива, т. е. сделать равными i и n - i - 1, i + 1 и n - i - 2
  9. Осуществить циклический сдвиг элементов массива влево или вправо на одну позицию
  10. Вторую половину массива заменить развернутой первой половиной (количество элементов четное)
  11. Увеличить каждый элемент на исходное значение элемента A[k]
Изменение элементов. Динамический массив
  1. После каждого элемента вставить элемент, имеющий значение k (при этом массив увеличится вдвое)
  2. Удалить элементы между элементами с индексами k и m
  3. После элемента массива с номером k вставить m новых элементов массива В
  4. Продублировать в массиве все элементы с четным или нечетным индексом
  5. Продублировать в массиве все четные или нечетные элементы
  6. Удалить из массива все соседние одинаковые элементы
  7. Удалить элементы равные k
  8. Утроить элементы равные k
  9. Добавить копию массива в конец
  10. После каждых 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
    


Print Friendly, PDF & Email

Добавить комментарий