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