Сделай Сам Свою Работу на 5

Реализация и результаты работы

Нижней треугольной матрицей называется матрица, все элементы которой, расположенные выше главной диагонали, равны 0.

В задаче реализован ввод нескольких матриц из текстового файла «Matr.txt». Содержимое текстового файла приведено на рисунок 3.1.

Рисунок 3.1 – Текстовый файл «Matr.txt»

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

Нумерация матриц начинается с 0.

На рисунок 3.2 - рисунок 3.6 представлены матрицы, прочитанные из файла, а на рисунок 3.7 - результаты работы программы.

Рисунок 3.2 – Матрица № 0

Рисунок 3.3 – Матрица № 1

Рисунок 3.4 – Матрица № 2

 

 

Рисунок 3.5 – Матрица № 3

Рисунок 3.6 – Матрица № 4

Рисунок 3.7 – Результаты работы программы

Листинг программы

Листинг программы приведен ниже.

#include <fstream>

#include <iostream>

#include <cstdlib>

#include "windows.h"

#include "string.h"

#include <locale.h>

#include <cstring>

 

using namespace std;

//==================================Функция позиционирования курсора

void gotoxy(int xpos, int ypos)

{

COORD scrn;

HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);

scrn.X = xpos; scrn.Y = ypos;

SetConsoleCursorPosition(hOuput,scrn);

}

//=====================================Основная функция

int main()

{

const int MatrMaxNumber = 10; //Максимальное кол-во квадратных матриц

const int Nmax = 10; //Максимальный размер квадратной матрицы

int MatrNumber; //реальное количество матриц

int MatrSort[MatrMaxNumber]; //Массив индексов для сортировки

int MatrTriAngle; //Количество нижних треугольных матриц

//===========Объявление структуры (массив структур матриц)

struct Matr

{

int N; //Размерность квадратной матрицы

int Arr[Nmax][Nmax]; //Собственно, сама матрица

int ArrMin; //Минимальный элемент матрицы

bool TriAngle; //Флаг, определяющий - является ли она нижней треугольной

};

 

Matr MatrArr[MatrMaxNumber]; //Массив матриц

 

//===========================Ввод элементов в массив структур матриц из файла Matr.txt

setlocale(LC_ALL,"RUS");

system("CLS");

fstream inp("Matr.txt");

if (!inp.is_open())

{

cout << "Ошибка открытия файла!\n";

system("PAUSE");

return 0;



}

inp>>MatrNumber;

for (int i=0;i<MatrNumber;i++)

{

inp>>MatrArr[i].N;

for (int j=0;j<MatrArr[i].N;j++)

for (int k=0;k<MatrArr[i].N;k++)

inp>>MatrArr[i].Arr[j][k];

}

 

inp.close();

//=====================Вывод массива матриц на экран

for (int i=0;i<MatrNumber;i++)

{

system("CLS");

cout<<"Квадратная матрица № "<<i<<"\n\n";

for (int j=0;j<MatrArr[i].N;j++)

{

for (int k=0;k<MatrArr[i].N;k++)

cout<<MatrArr[i].Arr[j][k]<<" ";

cout<<"\n";

}

cout<<"\n\n";

system("PAUSE");

}

//==================Определение минимального элемента и является ли

//==================матрица нижней треугольной

MatrTriAngle=0;

for (int i=0;i<MatrNumber;i++)

{

bool TA = true; //является ли матрица нижней треугольной

MatrArr[i].ArrMin = MatrArr[i].Arr[0][0];

for (int j=0;j<MatrArr[i].N;j++)

for (int k=0;k<MatrArr[i].N;k++)

{

if (k>j)

{

if (MatrArr[i].Arr[j][k]!=0)

TA=false;

}

else

{

if (MatrArr[i].Arr[j][k]<MatrArr[i].ArrMin)

MatrArr[i].ArrMin = MatrArr[i].Arr[j][k];

}

}

 

MatrArr[i].TriAngle=TA;

if (MatrArr[i].TriAngle)

{

MatrSort[MatrTriAngle] = i;

MatrTriAngle++;

}

}

//==============================Выдача результатов

system("CLS");

cout<<" Результаты работы программы\n\n";

if (MatrTriAngle==0)

cout<<"Нижних треугольных матриц в данной совокупности не существует !"<<"\n\n";

else

{

cout<<"Количество нижних треугольных матриц равно "<<MatrTriAngle<<"\n\n";

cout<<"Это матрицы с номерами : ";

for (int i=0;i<MatrTriAngle;i++)

cout<<MatrSort[i]<<" ";

cout<<"\n\n";

for (int i=0;i<MatrTriAngle;i++)

{

cout<<"Матрица № " <<MatrSort[i]<<". ";

cout<<"Минимальный элемент равен "<<MatrArr[MatrSort[i]].ArrMin<<"\n";

}

cout<<"\n\n";

//=======================сортировка матриц

for (int j=0;j<MatrTriAngle-1;j++)

for (int k=j+1;k<MatrTriAngle;k++)

if (MatrArr[MatrSort[k]].ArrMin<MatrArr[MatrSort[j]].ArrMin)

swap(MatrSort[j],MatrSort[k]);

cout<<"Сортировка нижних треугольных матриц : ";

for (int i=0;i<MatrTriAngle;i++)

cout<<MatrSort[i]<<" ";

cout<<"\n\n";

}

cout<<"\n";

system("PAUSE"); return 0;}

Задача № 6

Условие задачи

Сведения о веществе: название (строка), удельный вес (вещественное число), свойство проводимости (0 – нет проводимости, 1 – полупроводник, 2 - проводник). По сведениям о некотором количестве (не более N) веществ получить список веществ заданной проводимости, отсортированных по возрастанию удельных весов. Если нужных веществ нет, выдать соответствующее сообщение.



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.