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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2009, 18:30   #1
Makc++
Новичок
Джуниор
 
Регистрация: 24.06.2009
Сообщений: 1
Печаль Прокоментируйте программу "сглаживание матрицы", пожалуйста

Уважаемые модераторы и знатоки С++!
Помогите прокоментировать программу.
На изучение всего что в ней находиться попросту нет времени, в течении 3-5 дней нужно защитить...
Программу достал у старшекурсников несколько дней назад, все работает, но вот коментариев нет, а без них защитить практически невозможно.

Есть программный код, нужно прокаментировать каждую строку (желательно)

Задание:
Соседями элемента А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;
}
Заранее благодарен!
Makc++ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, написать программу в Паскаль по теме "Множества" SArtem Помощь студентам 10 19.12.2009 11:40
Переход по "ячейкам" матрицы LiaBerk Помощь студентам 0 13.06.2009 15:29
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
запрос (выйти(завершить программу)) "Y";"N". SKS Паскаль, Turbo Pascal, PascalABC.NET 7 15.01.2009 16:32
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51