Дан массив A, состоящий из n элементов.

Пример 1:

Дан массив A, состоящий из n элементов. Сформируйте «сглаженный» массив, заменив в исходном все элементы, кроме крайних, по формуле: A[i]= (A[i-1] + A [i] + A[i+1])/3.
При сглаживании используются лишь старые значения элементов массива. Изменённый массив оставить на старом месте. Для интереса сделанно для матриц и в двух вариантах.

Решение от преподавателя:

#include "stdafx.h"
#include
#include
using namespace std;
const int N=3, M=4;

 

class Lab
{

int StaticMatrix[N][M];
public:
void Imput()
{
for (int i=0; ifor (int k=0;kStaticMatrix[i][k]=rand()%10;
}
void Output()
{
for (int i=0; i{ cout<for (int k=0;kcout<}
cout<}

void WWM1() // сглаживает отдельные строки матрицы
{
int Marix2[N][M]; // Не костыль, а вспомогательная фикча
// счетчик кол-ва переделок - 3
for (int i=0; i{
for (int j=0; j

{
if(j==0) // оставляет "в покое" начальные элементы
Marix2[i][j]=StaticMatrix[i][j];
else
{
if (j==M-1) // оставляет "в покое" конечный элементы
{ Marix2[i][j]=StaticMatrix[i][j]; }
else // сглаживание
{
Marix2[i][j]=StaticMatrix[i][j-1]+StaticMatrix[i][j]+StaticMatrix[i][j+1];
Marix2[i][j]/=3;
}
}

}
}

for (int i=0; i{ cout<for (int k=0;kcout<< Marix2[i][k]<<" ";
}
cout<}
void WWM2() // сглаживает всю матрицу
{
// счетчик кол-ва переделок - 2
int Marix2[N][M];
for (int i=0; i{
for (int j=0; j{
if( i==0 || j==0 ) // оставляет "в покое" начальные элементы
Marix2[i][j]=StaticMatrix[i][j];
else
{
if (i==N-1 || j==M-1) // оставляет "в покое" конечные элементы
{ Marix2[i][j]=StaticMatrix[i][j]; }
else // сглаживание
{
Marix2[i][j]=StaticMatrix[i-1][j-1]+StaticMatrix[i-1][j]+StaticMatrix[i-1][j+1] // Очень крутое сложение всех элементов,
+StaticMatrix[i][j-1]+StaticMatrix[i][j]+StaticMatrix[i][j+1] // стоящих вокруг i-того,
+StaticMatrix[i+1][j-1]+StaticMatrix[i+1][j]+StaticMatrix[i+1][j+1]; // кроме крайних.
Marix2[i][j]/=9;
}
}

}
}

for (int i=0; i{ cout<for (int k=0;kcout<< Marix2[i][k]<<" ";
}
cout<}
};
int main(int argc, _TCHAR* argv[])
{

Lab Test1;
Test1.Imput();
Test1.Output();
Test1.WWM1();
Test1.WWM2();
system("pause");
return 0;
}

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!

Заполните, пожалуйста, данные для автора:

  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн