Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2010, 18:46   #1
uropb992
Пользователь
 
Регистрация: 30.12.2009
Сообщений: 33
По умолчанию С++ Операция сглаживания матрицы

Соседями элемента Аij в матрице назовем элементы Аkj c i-1 <= k <= i+1, j-1<= 1 <= j+1, (k,1) <> (i,j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 на 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
uropb992 вне форума Ответить с цитированием
Старый 28.05.2010, 18:49   #2
uropb992
Пользователь
 
Регистрация: 30.12.2009
Сообщений: 33
По умолчанию

//Нахождение суммы
for(i=0;i<n;i++)
{
c=0;
f=false;
for(int j=0;j<m;j++)
{
if(!f) f= (matr[j][i]<0);
c+=matr[j][i];
}
if(f) cout<<"Summ "<<i<<" = "<<c<<endl;
}
}

хз ваще как делать =)
uropb992 вне форума Ответить с цитированием
Старый 07.07.2012, 21:58   #3
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

#include<iostream>
#include<locale>
#include<time.h>
using namespace std;

void main() {
setlocale(LC_ALL, "RUS"); // Чтобы русский шрифт нормально отображался

float mas[10][10]; // исходный массив
float rez[10][10]; // массив сглаживания
float sum=0; // сумма соседей
int kol_sosedej=0; // необходимо для нах. среднего арифм.

srand(time(NULL)); // генерируем случайные

// Заполение случайными вещественными
// в первых скодках получаем значения вещественных

for (int i=0; i<10; i++)
for (int j=0; j<10; j++) mas[i][j]=0.01*rand() % 2000-10 ;

// Вывод исходного массива
for (int i=0; i<10; i++){
cout << "\n";
for (int j=0; j<10; j++){
cout.width(6);
cout.precision(2);
cout << mas[i][j];
}
}


for (int i=0; i<10; i++)
for (int j=0; j<10; j++) //проходим по значениям исходного массива
{
sum=0;
kol_sosedej=0; // обнуления для нового значения
for (int k=i-1; k<=i+1; k++)
for (int l=j-1; l<=j+1; l++){ // создаю новые проходы по соседям с помощью циклов
if (k>=0 && l>=0 && k<10 && l<10) // ограничиваю выход за пределы массива
if (!(k==i && l==j)){ // исключаю совпадения с ячейкой заполнения
sum+=mas[k][l];
kol_sosedej++;
} // if (k!=i && l!=j)
if (k==i+1 && l==j+1) rez[i][j]=(sum/kol_sosedej); // когда дошли до последнего соседа записываю среднее арифметическое
} // for (int k=i-1; k<=i+1; k++) for (int l=j-1; l<=j+1; l++)
}


// вывод новой матрицы
cout << "\n";

for (int i=0; i<10; i++){
cout << "\n";
for (int j=0; j<10; j++){
cout.width(6); // для нормального вывода
cout.precision(2);
cout << rez[i][j];
}
}

// подсчет суммы с выводом
sum=0;
for (int i=0; i<10; i++)
for (int j=0; j<10; j++)
if (i-j>0)
sum+=fabs(rez[i][j]);

cout << "\nСумма ниже главной диагонали " << sum;

system("PAUSE >> VOID");
}
Человек

Последний раз редактировалось Артём Волжанкин; 08.07.2012 в 12:25. Причина: добавил комментарии и исправил код
Артём Волжанкин вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операция с panel grafgrial Общие вопросы Delphi 7 31.03.2010 20:35
операция SHL Anohorett Общие вопросы C/C++ 2 02.12.2009 23:27
Операция в Газе Роман Радер Свободное общение 2 31.12.2008 17:03
Операция Ы SASHA50 Microsoft Office Excel 10 25.04.2008 12:38
Операция сдвига? SkyDreamer Общие вопросы C/C++ 3 10.10.2007 08:20