Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы.
- с помощью допустимых преобразований привести систему к треугольному виду;
- найти количество строк, среднее арифметическое элементов которых меньше заданной величины.
Код программы:
//--------------------------------------------------------------------------- #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; } //---------------------------------------------------------------------------
Результат работы программы: