Сделай Сам Свою Работу на 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 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.