Вариант 11

Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы.

  1. с помощью допустимых преобразований привести систему к треугольному виду;
  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,m,i,j;
  float sum,average,cnt=0,value;
  
  cout<<rus("Введите размерность массива:")<<endl;
  cout<<rus("Введите количество строк:    n=");cin>>n;
  cout<<rus("Введите количество столбцов: m=");cin>>m;

  float **a=new float*[n];                 //объявление массива
  for(i=0;i<n;i++)a[i]=new float [m];

  float *b=new float[i];     //объявление массива для хранения среднего
                           // арифметического каждой сроки
//---------------------------------------------------------------------------
  cout<<rus("\nВведите элементы массива:")<<endl<<endl;
  for(i=0;i<n;i++)
   {
    for(j=0;j<m;j++)
     {
      a[i][j]=-1+random(5);      //заполнение массива случайными числами
      cout<<setw(4)<<a[i][j];    // и вывод с форматированием(4 пробела между элементами массива)
     }
    cout<<endl;
   }
//---------------------------------------------------------------------------
//подсчет среднего арифметического каждой строки
  for(i=0;i<n;i++)
   {
    sum=average=0;     //обнуляем значения перед началом просмотра строки, иначе значения будут суммироваться
    for(j=0;j<m;j++)
    sum+=a[i][j];
    average=sum/m;
    b[i]=average;
   }
  cout<<rus("\nВывод матрицы со средним арифметическим по строкам");
  cout<<endl<<endl;
  for(i=0;i<n;i++)
   {
    for(j=0;j<m;j++)
    cout<<setw(4)<<a[i][j];
    cout<<setw(10)<<b[i]<<endl;
   }
//поиск строк
  cout<<rus("\nВведите величину для поиска строк, среднее арифметическое элементов которых меньше заданной величины: value=");cin>>value;
  for(i=0;i<n;i++)
   {
    if(b[i]<value)
     cnt++;
   }
  if(0==cnt)
  cout<<rus("Строк, среднее арифметическое элементов которых меньше заданной величины НЕТ!");
  else cout<<rus("\nКоличество строк, среднее арифметическое элементов которых меньше заданной величины: ")<<cnt;

 }
//---------------------------------------------------------------------------
//приведение матрицы к треугольному виду
  for(i=1;i<n;++i)
   for(k=i;k<n;++k)
    for(j=n-1;j>=0;--j)
     if(a[k][i-1]!=0 && a[i-1][i-1]!=0 && a[i-1][j]!=0)
      a[k][j]-=(a[k][i-1]/a[i-1][i-1]*a[i-1][j]);
//для округления значений матрицы можно воспользоваться функцией ceil
 //a[k][j]-=ceil((a[k][i-1]/a[i-1][i-1]*a[i-1][j]));
//вывод матрицы после приведения к треугольному виду

  cout<<rus("\n\nПреобразованная матрица:");  
  cout<<endl<<endl;
  for(i=0;i<n;i++)
   {
    for(j=0;j<m;j++)
    cout<<setw(10)<<a[i][j];
    cout<<endl;
   }
  getch();
  return 0;
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text, bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

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

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

Вариант 10
Вариант 12
error: Content is protected !!