Поменять местами последний элемент массива с элементом, который ближе всего находится к среднему значению - 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.