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

Объяснение кода листинга программы

  1. В начале определяется функция abs(x), которая возвращает абсолютное значение числа x.
  2. Затем определена функция swap(data, n), которая меняет местами последний элемент массива с элементом, который ближе всего находится к среднему значению.
  3. Внутри функции swap(data, n) инициализируются следующие переменные: — s инициализируется нулём. Эта переменная будет использоваться для хранения суммы элементов массива. — p инициализируется указателем на последний элемент массива (data+n-1). Переменная используется для перебора элементов массива в обратном порядке. — int *sp инициализируется указателем на первый элемент массива (data). Эта переменная используется для хранения указателя на элемент, который ближе всего к среднему значению. — int t инициализируется значением последнего элемента массива (data[n-1]). Эта переменная используется для временного хранения значения элемента, который будет заменён на значение элемента, ближайшего к среднему значению.
  4. Далее, в цикле, происходит перебор элементов массива в обратном порядке. На каждой итерации к переменной s прибавляется значение элемента массива, делённое на размер массива.
  5. Во внутреннем цикле, который также выполняется на каждой итерации внешнего цикла, проверяется, является ли текущий элемент ближе всего к среднему значению. Если это так, то указатель sp обновляется, чтобы указывать на текущий элемент.
  6. После завершения циклов, переменная t присваивается значение элемента, на который указывает указатель sp.
  7. Наконец, последний элемент массива (data[n-1]) заменяется на значение переменной t, а элемент, на который указывает указатель sp, заменяется на значение переменной t.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы