Консультация № 66815
13.12.2006, 13:59
0.00 руб.
0 2 2
Вводится массив. Заменить каждый его элемент на среднее арифметическое из 3-х соседних элементов. Например, из массива
1 5 3 7 8
должно получиться
2.00 3.00 5.00 6.00 5.00
Элементы за границей массива считать равными 0.


Приложение:
нужен полный код программы !!!! помогите!!!

Обсуждение

Неизвестный
13.12.2006, 16:52
общий
это ответ
Здравствуйте, Kostyasyper!
Самый простой способ создать дополнительный массив, ответ записать туда и скопировать его элементы в А:
int A[N]; //Исходный массив

float B[N]; //Здесь средние значения
for(int i = 1; i <N-1; i++){
B[i] = (A[i-1] + A[i] + A[i+1])/3.0f;
}
B[0] = (A[0] + A[1]) / 3.0f;
B[N-1] = (A[N-2] + A[N-1]) / 3.0f;

for(int i = 0; i < N; i++){
A[i] = B[i];
}
Неизвестный
13.12.2006, 19:49
общий
это ответ
Здравствуйте, Kostyasyper!
А вот без вспомогатеьных массивов

Приложение:
double A[]={1;5;3;7;8}; //массив с даннымиconst int N=5; //размер массиваdouble a_prev=0;double mean;for (int i=0;i<N-1;++i){ mean=(a_prev+A[i]+A[i+1])/3; a_prev=A[i]; A[i]=mean;}A[N-1]=(A[N-1]+a_prev)/3;
Форма ответа