Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Пример 6.4. Сглаживание заданной вещественной матрицы, работа с файлами

Читайте также:
  1. A) работает со всеми перечисленными форматами данных
  2. Be on the make - продолжать работать
  3. E) Работа в цикле
  4. I. 1.1. Пример разработки модели задачи технического контроля.
  5. I. Самостоятельная работа
  6. I. Самостоятельная работа
  7. I. Самостоятельная работа

Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имею­щихся соседей соответствующего элемента исходной матрицы.

Построить резуль­тат сглаживания заданной вещественной матрицы размером 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 | Нарушение авторских прав


Читайте в этой же книге: Операторы, составляющие тело функции | Операнд_1 ? операнд_2 : операнд_3 1 страница | Операнд_1 ? операнд_2 : операнд_3 2 страница | Операнд_1 ? операнд_2 : операнд_3 3 страница | Операнд_1 ? операнд_2 : операнд_3 4 страница | Операнд_1 ? операнд_2 : операнд_3 5 страница | Операнд_1 ? операнд_2 : операнд_3 6 страница | Операнд_1 ? операнд_2 : операнд_3 7 страница | Операнд_1 ? операнд_2 : операнд_3 8 страница | Пример 6.1. Среднее арифметическое и количество положительных элементов |
<== предыдущая страница | следующая страница ==>
Пример 6.2. Номер столбца из положительных элементов| Пример 6.5. Определение количества отрицательных элементов в тех строках данной целочисленной прямоугольной матрицы, которые содержат хотя бы один нулевой элемент

mybiblioteka.su - 2015-2024 год. (0.006 сек.)