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