Вариант 9

Соседями элемента Аij в матрице назовем элементы Аkl с i1ki+1, j1lj+1, (k, l)≠(i, j). Операция сглаживания матрицы дает новую матрицу того же размера,
каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.

  1. построить результат сглаживания заданной вещественной матрицы размером 10 на 10;
  2. в сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.

Код программы:

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<windows.h>
#include<iomanip.h>
#include<vcl.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char *rus(const char *text);
int main(int argc, char* argv[])
 {
  randomize();
  int n=10,i,j,l,k;
  float sum=0;
  cout<<rus("Введите размерность массива:")<<endl;
  cout<<rus("Введите количество строк и столбцов: n=")<<n;
  float **a=new float*[n];
  for(i=0;i<n;i++)a[i]=new float[n];
  float **a1=new float*[n];
  for(k=0;k<n;k++)a1[k]=new float[n];
//---------------------------------------------------------------------------
  cout<<rus("\nВведите элементы массива:\n\n");
  for(i=0;i<n;i++)
   {
    for(j=0;j<n;j++)
     {
      a[i][j]=-2.1+random(10.1);
      cout<<setw(5)<<a[i][j];
     }
    cout<<endl;
   }
//---------------------------------------------------------------------------
  for(i=0,k=0;i<n,k<n;i++,k++)
   {
    for(j=0,l=0;j<n,l<n;j++,l++)
     {
      if(i==0)
       {
        if(j==0) a1[k][l]=(a[i][j+1]+a[i+1][j])/2;
       }
      if(i==0)
       {
        if(j>0&&j<(n-1)) a1[k][l]=(a[i][j+1]+a[i][j-1]+a[i+1][j])/3;
       }
      if(i==0)
       {
        if(j==(n-1)) a1[k][l]=(a[i][j-1]+a[i+1][j])/2;
       }
      if(i>0&&i<(n-1))
       {
        if(j==0)a1[k][l]=(a[i][j+1]+a[i-1][j]+a[i+1][j])/3;
       }
      if(i>0&&i<(n-1))
       {
        if(j>0&&j<(n-1))a1[k][l]=(a[i][j+1]+a[i][j-1]+a[i-1][j]+a[i+1][j])/4;
       }
      if(i>0&&i<(n-1))
       {
        if(j==(n-1))a1[k][l]=(a[i][j-1]+a[i-1][j]+a[i+1][j])/3;
       }
      if(i==(n-1))
       {
        if(j==0)a1[k][l]=(a[i][j+1]+a[i-1][j])/2;
       }
      if(i==(n-1))
       {
        if(j>0&&j<(n-1))a1[k][l]=(a[i][j+1]+a[i][j-1]+a[i-1][j])/3;
       }
      if(i==(n-1))
       {
        if(j==(n-1))a1[k][l]=(a[i][j-1]+a[i-1][j])/2;
       }
     }
   }
  cout<<rus("\nСглаженная матрица:\n\n");
  for(k=0;k<n;k++)
   {
    for(l=0;l<n;l++)
    cout<<setw(10)<<a1[k][l];
    cout<<endl;
   }
//---------------------------------------------------------------------------
  for(k=0;k<n;k++)
   {
    for(l=0;l<n;l++)    //сумма элементов
     {                  //расположенных ниже
      if(l<k)           //главной диагонали
       {                //матрицы
        sum+=fabs(a1[k][l]);
       }
     }
   }
  cout<<rus("\nСумма модулей элементов расположенных ниже главной диагонали матрицы: ");
  cout<<sum;
  getch();
  return 0;
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text, bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

Результат работы программы:

Результат работы. Девятый вариант. Двумерные массивы

Вариант 8
Вариант 10
error: Content is protected !!
Adblock
detector