Читайте также: |
|
Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.
Построить результат сглаживания заданной вещественной матрицы размером 10 на 10. В сглаженной матрице найти сумму модулей элементов, расположенных выше главной диагонали. Ввод и вовод данных в программе осуществить с помощью файла. UML-диаграмма этого алгоритма приведена на рисунке 6.4.
Рисунок 6.4 - UML-диаграмма деятельности для примера 6.4
Листинг 6.5
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <tchar.h>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
const int nrow=10;
const int ncol=10;
ifstream fin("input.txt",ios::in);
if (!fin)
{
cout<<"Can't find input.txt"<<endl;
return 1;
}
ofstream fout("output.txt");
if (!fout)
{
cout<<"Write falure: check permission"<<endl;
return 1;
}
int k,l,k1,l1,counter,i,j;
double sum,sumdiag=0;
//заполнение массива из файла
double a[nrow][ncol];
cout << "Чтение данных из файла..." << endl;
for(i=0;i<nrow;i++)
for(j=0;j<ncol;j++) fin>>a[i][j];
double m[nrow][ncol];
cout<<"Обработка данных..."<<endl;
//процедура сортировки
counter=0;sum=0;l=0;l1=0;
for(i=0;i<nrow;i++)
for(j=0;j<ncol;j++)
{
k=i-1;
k1=i+1;
if (k<0) k++;
if (k1>ncol-1) k1--;
if ((j<=ncol-1)&&(j>=ncol-i)) sumdiag = sumdiag + a[i][j];
for(k;k<=k1;k++)
{
l=j-1;
l1=j+1;
if (l<0) l++;
if (l1>ncol-1) l1--;
for(l;l<=l1;l++)
if ((k==i)&&(l==j)) continue;
else
{
sum=sum+a[k][l];
counter++;
}
}
m[i][j]=(float) sum/counter;
sum=0;
counter=0;
}
//запись отсортированного массива в файл
Cout << "Запись результатов обработки в файл..." << endl;
for(i=0;i<nrow;i++)
{
for(j=0;j<ncol;j++)
fout<<setw(5)<<left<<setprecision(3)
<<m[i][j]<<" ";
fout<<endl;
}
Fout << endl;
Fout << "Сумма всех эл-ов ниже глав. диагонали:" << setw(5) << setprecision(9) << sumdiag << endl;
cout << "Обработка закончена!" << endl;
return 0;
}
Рисунок 6.5 – Файл для входных данных
Рисунок 6.6 – Файл для выходных данных
Рисунок 6.7 – Вывод программы на экран
Дата добавления: 2015-10-26; просмотров: 260 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример 6.2. Номер столбца из положительных элементов | | | Пример 6.5. Определение количества отрицательных элементов в тех строках данной целочисленной прямоугольной матрицы, которые содержат хотя бы один нулевой элемент |