Задания для самостоятельного выполнения
- Сложность:
- Rare
- Напишите программу по своему варианту.
- Оформите отчёт в
README.md
. Отчёт должен содержать:- Задание
- Описание проделанной работы
- Скриншоты результатов
- Ссылки на используемые материалы
- Сложность:
- Medium
- Используйте динамическое выделение памяти для хранения данных программы
- Сложность:
- Well-done
- Замените в программе массив на связный список собственной реализации, позволяющий хранить данные любого типа
Требования и ограничения
Количество элементов массива вводить с клавиатуры, массив заполнить случайными числами. Необходимые расчёты и модификации реализовать в виде функций.
Пример
Заполнить массив случайными числами в диапазоне \([-50, 50]\).
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void fill(int n, int a[])
{
int i;
for (i = 0; i < n; i++)
a[i] = rand () % 101 - 50;
}
int main()
{
srand(time(NULL));
int n;
printf("n -> ");
scanf("%d", &n);
int A[n];
fill(n, A);
int i;
for (i = 0; i < n; i++)
printf("%4d", A[i]);
printf("\n");
return 0;
}
Результаты работы программы
n -> 5
21 -32 27 -22 29
Варианты заданий
- Найти сумму индексов максимального и минимального элемента массива, если она меньше/больше по модулю минимума/максимума соответственно, записать её на их место, иначе обнулить массив между минимум и максимумом.
- Максимально эффективно по используемой памяти записать отрицательные и положительные элементы массива в массивы
P
иN
соответственно. - Найти три максимума в массиве и записать разность их произведения и суммы по индексу суммы их индексов по модулю
n
, гдеn
- количество элементов массива. - Максимально эффективно по используемой памяти сформировать массив из элементов, встречающихся в обоих массивах
A
иB
. - Вычислить сумму и произведение элементов между двумя повторяющимися элементами массива и записать вычисленные значения вместо повторяющихся.
- Найти простые элементы массива натуральных чисел. Вывести на экран, если такой элемент один, поменять местами, если их два, иначе - вывести их индексы.
- Найти в массиве первое вхождение искомого элемента, а все элементы в частях массива до и после него “перевернуть”, то есть поменять порядок их следования на обратный. Если такого элемента нет, “перевернуть” весь массив.
- Найти два подряд идущих элемента в массиве целых чисел, сумма которых максимальна и прибавить эту сумму к двум минимумам этого массива.
- Найти два взаимно простых числа в массиве натуральных чисел, вывести на экран и поменять меньшее из них местами с максимумом, а большее - с минимумом. Если таких чисел нет, обнулить минимум и максимум.
- Максимально эффективно по используемой памяти сформировать массив из элементов, не встречающихся в массивах
A
иB
одновременно. Диапазон возможных значений элементов \([-19, 20]\). - Обменивать местами два случайных элемента массива, пока все его элементы не будут стоять в порядке возрастания. Вывести количество обменов и итоговый массив. Диапазон возможных значений элементов \([-9, 9]\).
- Произвести поиск элементов в массиве, которые сильно отклоняются от среднего значения и внести поправку с результатом ниже среднего, если элемент стоит на нечётном месте, и выше среднего, если на чётном. Величину отклонения вводить с клавиатуры.