Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
just_smile
#1

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

24.12.2012, 23:49. Просмотров 653. Ответов 2
Метки нет (Все метки)

Написать функцию 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++):

Нужно написать функцию которая будет увеличевать каждый элеммент массива на 10% (Ввод массива через клаву) - C++
#include &lt;iostream&gt; #define n 7 using namespace std ; int funct(int q) { funct=q*10% ; } int main () { int a; ...

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

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

Написать функцию сортировки пузырьком массива - C++
Нужно написать функцию сортировки (например пузырьком) массива, а затем отсортировать ей какую-ниюудь строку матрицы 5х5 (например вторую)

Написать функцию, возвращающую сумму элементов массива - C++
Разработайте функцию, в которую передается массив типа float, что возвращает сумму элементов этого массива.

Написать функцию вычисления суммы элементов массива - C++
вот мои наработки...ошибки выдает,а я их не вижу. #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; main() { int fun(int x); { int...

2
SummerRain
326 / 325 / 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];
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,047
Записей в блоге: 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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 03:18
Привет! Вот еще темы с ответами:

Написать функцию, которая заполняет список из массива - C++
Здравствуйте, нужно создать функцию которая заполняет список из массива, но строить список с конца, не могу вернутся к предыдущему елементу...

Написать функцию replace для массива char'ов - C++
Нужно написать функцию замены подстроки f на подстроку t в строке а: int replace(char a, const char f, const char t)f может быть равна...

Функции. Написать функцию, удаляющую элемент массива - C++
Написать функцию, удаляющую элемент массива. Все элементы после него сдвигаются на один влево, а последний равен нулю.

Написать функцию нахождения минимального элемента массива - C++
функция с параметром Помогите пожалуйста. Написать функцию, которая получает в качестве параметров адрес числового массива данных и его...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru