Указатели: Поменять местами последний элемент с элементом, который ближе всего находится к среднему значению - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста. Дан массив целых чисел, состоящий из N элементов(N=20). Поменять местами последний элемент с элементом, который ближе всего находится к среднему значению. В программе при обращении к элементу массива нельзя использовать дополнительную переменную для вычисления его адреса. Программа работает, но нельзя использовать

*(p+i)

, нужна другая адресация на элементы массива. И еще переменные

mi

и

ma

должны быть типа

fload

, чтобы среднее арифметическое высчитывалось точно.
#include<stdio.h>
#include<stdlib.h>
#define N 5
int main ()
{
    int a[N],i,j,k,*p=a;
    int mi=100;
    int ma=0;
    for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    for(i=0;i<N;i++)
    {
    ma=ma+(*(p+i));
    }
    ma=ma/N;
    j=0;
    for(i=0;i<N;i++)
    if(ma==*(p+i)||(ma+1)==*(p+i))
    {
    j=i;
    k=*(p+i);
    }
    mi=*(p+N-1);
    *(p+N-1)=k;
    a[j]=mi;
    printf("\n\n");
    for(i=0;i<N;i++)
    printf("%d\t",*(p+i));
    system("pause");
    return 0;
}

Решение задачи: «Указатели: Поменять местами последний элемент с элементом, который ближе всего находится к среднему значению»

textual
Листинг программы
int *p=a;
while(...){
  p++;
}

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


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

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

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