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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.06.2009, 21:21   #1
klepan
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 32
По умолчанию Пожалуйста помогите

Есть программный код, нужно прокаментировать каждую строку
Задание:
Соседями элемента Аij в матрице назовем элементы Akl c i-l ≤ k ≤ i+l, j-l ≤ l ≤ j+l,(k, l)≠(i, j).
Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент
которой получается как среднее арифметическое имеющихся соседей соответствующего
элемента исходной матрицы. Построить результат сглаживания заданной вещественной
матрицы размером 10 на 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной
диагонали.

Программный код:
Код:
#include <vcl.h>
#pragma hdrstop
#include <conio.h>

#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <vector>
#include <iostream>
#pragma argsused

int main(int argc, char* argv[])
{

using namespace std;

 srand((unsigned) time(NULL));

 int n = 10;
 int m = 10;

 int r_limit = 10;

 vector<vector<double> > matrix;

 int i, j;
 for(i=0; i<n; i++) {

  vector<double> v;

  for(j=0; j<m; j++)
   v.push_back((rand()%2) ? (static_cast<double>(rand()%r_limit) + 1./static_cast<double>(rand()%r_limit + 1.)) :
         -(static_cast<double>(rand()%r_limit) + 1./static_cast<double>(rand()%r_limit + 1.)));

  matrix.push_back(v);
 }

 cout << "Initial matrix:" << endl;

 for(i=0; i<n; i++) {

  for(j=0; j<m; j++)
   cout << matrix[i][j] << " ";

  cout << endl;
 }

 vector<vector<double> > smooth_matrix;

 for(i=0; i<n; i++) {

  vector<double> v;

  for(j=0; j<m; j++) {
  
   double avg = 0.;
   int elements_count = 0;
    
   if(j-1 >= 0) {

    if(i-1 >= 0) {
     avg += matrix[i-1][j-1];
     elements_count++;
    }

    avg += matrix[i][j-1];
    elements_count++;
    
    if(i+1 < n) {
     avg += matrix[i+1][j-1];
     elements_count++;
    }
   }

   if(i-1 >= 0) {
    avg += matrix[i-1][j];
    elements_count++;
   }

   if(i+1 < n) {
    avg += matrix[i+1][j];
    elements_count++;
   }

   if(j+1 < m) {

    if(i-1 >= 0){
     avg += matrix[i-1][j+1];
     elements_count++;
    }

    avg += matrix[i][j+1];
    elements_count++;
    
    if(i+1 < n) {
     avg += matrix[i+1][j+1];
     elements_count++;
    }
   }

   if(elements_count != 0)
    avg /= static_cast<double>(elements_count);

   v.push_back(avg);
  }

  smooth_matrix.push_back(v);
 }

 cout << endl << "Smooth matrix:" << endl;

 for(i=0; i<n; i++) {

  for(j=0; j<m; j++)
   cout << smooth_matrix[i][j] << " ";

  cout << endl;
 }

 double summ = 0;

 for(i=0; i<n; i++)
  for(j=0; j<i; j++)
   summ += fabs(smooth_matrix[i][j]);

 cout << endl << "Summ of elements modules at main diagonal in smooth matrix is: " << summ << endl;

 getch();
 return 0;
}
зарание спасибо
klepan вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сколько раз элемент C[i,i] двухмерного массива C(N,N) встречается в этом массиве kirillbobo Паскаль, Turbo Pascal, PascalABC.NET 3 19.06.2009 20:44
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44
помогите пожалуйста... Alira Помощь студентам 16 09.11.2007 18:41