Форум программистов, компьютерный форум CyberForum.ru

написать функцию сглаживания массива - C++

Восстановить пароль Регистрация
 
just_smile
Сообщений: n/a
24.12.2012, 23:49     написать функцию сглаживания массива #1
Написать функцию smooth(A, N), заменяющую каждый элемент массива вещественных чисел A размерности N на среднее арифметическое его соседей («сглаживание массива»). При демонстрации работы функции размер массива вводит пользователь, массив заполняется случайно числами от 1 до 10. Пример: результат смешивания массива 4 7 3 3 5 составляет 4 3.5 5 4 5.


Вот что получилось. Но программа работает неправильно, помогите найти ошибку...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include "stdio.h"
#include "math.h"
#include "string.h"
using namespace std; 
 
void smooth( float A[], int N) 
 {
for (int i=1; i<N-1 ;i++)
A[i]=(A[i+1]+A[i-1])/2; 
cout<<"Сглаженный массив:"<< endl;
for (int i=0; i<N; i++)
cout << A[i] << " "; }
 
int _tmain(int argc, _TCHAR* argv[]) {
setlocale(LC_ALL, "Russian");
int N;
cout<<"Введите размерность массива:"<<endl;
cin>>N; 
float *str = new float[N];
for (int i=0; i<N; i++) {
str[i] = rand()%10 + 1; 
cout << str[i] << endl; }
smooth (str, N); 
for (int i=0; i<N; i++)
cout << str[i] << " ";
_getch();
return 0; }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 23:49     написать функцию сглаживания массива
Посмотрите здесь:

Написать функцию сортировки пузырьком массива C++
C++ Написать функцию replace для массива char'ов
C++ Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными элем
Написать функцию вычисления суммы элементов массива C++
C++ Написать функцию сортировки элементов линейного массива
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными э C++
Написать функцию, которая заполняет список из массива C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
25.12.2012, 00:06     написать функцию сглаживания массива #2
нужно применять другой массив для хранения "сглаженных значений".
B[i]=(A[i+1]+A[i-1])/2;
потому что, когда вы делаете одну итерацию цикла, то следующую итерацию вы уже делаете с одним сглаженым значением элемента массива (A[i-1]).
Опять же делаете новый цикл. И уже присваиваете значения из временного массива в ваш.
А[i] = B[i];
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
25.12.2012, 03:18     написать функцию сглаживания массива #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
//--------------------------------------------------------
template<class T>
void some(T* first,T* last,T* result)
{
  T* left= nullptr;
  T* right= first;
 
  for(; first!=last; ++first,++result)
   {
     ++right;
     if( left &&  right!=last )
       {
         *result = (*left + *right)/2;
       }
     else *result= *first;
 
     left= first;
   }
}
//--------------------------------------------------------
int main()
{
  const size_t size=5;
  float A[size]={1,2,5,13,15}; // исходный
  float B[size]={0}; // результат
 
  for(float &f:A) cout<<f<<"\t"; cout<<endl;
 
  some(A,A+size,B);
 
  for(float &f:B) cout<<f<<"\t"; cout<<endl;
 
  return 0;
}
//--------------------------------------------------------
1 2 5 13 15
1 3 7.5 10 15
Yandex
Объявления
25.12.2012, 03:18     написать функцию сглаживания массива
Ответ Создать тему
Опции темы

Текущее время: 01:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru