Поменять местами последний элемент массива с элементом, который ближе всего находится к среднему значению - C (СИ)
Формулировка задачи:
1.Дан массив целых чисел, состоящий из N элементов(N=20). Поменять местами последний элемент с элементом, который ближе всего находится к среднему значению.
2.В заданном массиве строк найти все слова, содержащие заданное количество гласных букв и вывести их на монитор.
3.Дан массив вещественных чисел, состоящий из N элементов(N=20). Поменять местами минимальный элемент с элементом, следующим за максимальным(если максимальный элемент является последним, то минимальный сделать первым).
4. Найти самое длинное слово и удалить его(удаляемое слово вывести на экран монитора перед обработанным массивом строк).
В программах при обращении к элементу массива нельзя использовать дополнительную переменную для вычисления его адреса. В 1 и 3 программе исходные данные ввести с клавиатуры, если в задании не оговорен иной способ. Во 2 и 4 программе исходный массив строк ввести с помощью инициализации. Максимальное количество символов в строке-80.количество строк-5.на экран монитора вывести исходный массив и результат расчета.
Решение задачи: «Поменять местами последний элемент массива с элементом, который ближе всего находится к среднему значению»
textual
Листинг программы
double abs(double x) { if (x<0.0) { return -x; } return x; } void swap(int *data, size_t n) { double s; int *p; int *sp; int t; for (s=0.0, p=data+n-1; p>=data; --p) { s+=((double)(*p))/((double)n); } for (sp=data, p=data+n-1; p>=data; --p) { if (abs(((double)(*p)))<abs(((double)(*sp)))) { sp=p; } } t=*(data+n-1); *(data+n-1)=*sp; *sp=t; }
Объяснение кода листинга программы
- В начале определяется функция abs(x), которая возвращает абсолютное значение числа x.
- Затем определена функция swap(data, n), которая меняет местами последний элемент массива с элементом, который ближе всего находится к среднему значению.
- Внутри функции swap(data, n) инициализируются следующие переменные: — s инициализируется нулём. Эта переменная будет использоваться для хранения суммы элементов массива. — p инициализируется указателем на последний элемент массива (data+n-1). Переменная используется для перебора элементов массива в обратном порядке. — int *sp инициализируется указателем на первый элемент массива (data). Эта переменная используется для хранения указателя на элемент, который ближе всего к среднему значению. — int t инициализируется значением последнего элемента массива (data[n-1]). Эта переменная используется для временного хранения значения элемента, который будет заменён на значение элемента, ближайшего к среднему значению.
- Далее, в цикле, происходит перебор элементов массива в обратном порядке. На каждой итерации к переменной s прибавляется значение элемента массива, делённое на размер массива.
- Во внутреннем цикле, который также выполняется на каждой итерации внешнего цикла, проверяется, является ли текущий элемент ближе всего к среднему значению. Если это так, то указатель sp обновляется, чтобы указывать на текущий элемент.
- После завершения циклов, переменная t присваивается значение элемента, на который указывает указатель sp.
- Наконец, последний элемент массива (data[n-1]) заменяется на значение переменной t, а элемент, на который указывает указатель sp, заменяется на значение переменной t.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д