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

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

Сведения о веществе выполнены в программе в виде структуры данных, следовательно, список веществ – массив структур.

В программе организован ввод данных из текстового файла «Subst.txt». Содержимое текстового файла приведено на .

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

Как видно из файла, разделителем полей служит символ «;».

Нумерация полей начинается с 0.

Ввод данных в файл и задание требуемой проводимости приведен на рисунок 4.2, результаты работы – на рисунок 4.3.

Рисунок 4.2 – Ввод данных и выбор требуемой проводимости

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

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

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

#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 Nmax = 50; //Максимальное кол-во элементов в массиве веществ

//===========Объявление структуры

struct Substance

{

char Name[20]; //Наименование вещества

double SpecificGravity; //Удельный вес

int Conductivity; //Проводимость (0-нет проводимости, 1-полупроводник, 2 - проводник)

};

 

Substance SubstanceArr[Nmax]; //Массив структур

Substance SubstanceArrSort[Nmax];

int N = 0; //Реальное кол-во элементов в массиве структур

int Nsort = 0; //Размерность получаемого массива

 

int ConType; //Введенная проводимость

char Sp[20]; //Служебная переменная для ввода удельного веса

char Co[20]; //Служеюная переменная для ввода проводимости

char NameTemp[20]; //Служебная переменная

double SpecificGravityTemp; //Служебная переменная

int ConductivityTemp; //Служебная переменная

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

setlocale(LC_ALL,"RUS");

system("CLS");

fstream inp("Subst.txt");

if (!inp.is_open())

{

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

system("PAUSE");

return 0;

}

while(!inp.eof())

{

inp.getline(SubstanceArr[N].Name,20,';');

inp.getline(Sp,20,';');

inp.getline(Co,20);

SubstanceArr[N].SpecificGravity = atof(Sp);

SubstanceArr[N].Conductivity=atoi(Co);

N++;



}

inp.close();

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

system("CLS");

cout<<" Исходный список веществ\n\n ";

cout<<"Наименование Удельный вес Проводимость[0 - нет, 1 - полу, 2 - да]\n\n";

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

{

cout<<SubstanceArr[i].Name<<" ";

gotoxy(21,4+i);

cout<<SubstanceArr[i].SpecificGravity<<" ";

gotoxy(40,4+i);

cout<<SubstanceArr[i].Conductivity<<"\n";

}

cout<<"\n\n";

cout << "Введите тип проводимости [0,1,2]: ";

cin >> ConType;

//=========================Поиск веществ с заданной проводимостью

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

if (SubstanceArr[i].Conductivity == ConType)

{

strcpy(SubstanceArrSort[Nsort].Name,SubstanceArr[i].Name);

SubstanceArrSort[Nsort].SpecificGravity = SubstanceArr[i].SpecificGravity;

SubstanceArrSort[Nsort].Conductivity=SubstanceArr[i].Conductivity;

Nsort++;

}

//===========Нет таких веществ

if (Nsort==0)

{

cout<<"\n\n Нет веществ с таким типом проводимости\n\n";

system("PAUSE");

return 0;

}

//==============Такие вещества есть - сортируем по удельному весу

for(int i=0;i<Nsort-1;i++)

for(int j=i+1;j<Nsort;j++)

if (SubstanceArrSort[j].SpecificGravity<SubstanceArrSort[i].SpecificGravity)

{

//================Замена мест

strcpy(NameTemp,SubstanceArrSort[i].Name);

SpecificGravityTemp = SubstanceArrSort[i].SpecificGravity;

ConductivityTemp = SubstanceArrSort[i].Conductivity;

strcpy(SubstanceArrSort[i].Name,SubstanceArrSort[j].Name);

SubstanceArrSort[i].SpecificGravity = SubstanceArrSort[j].SpecificGravity;

SubstanceArrSort[i].Conductivity = SubstanceArrSort[j].Conductivity;

strcpy(SubstanceArrSort[j].Name,NameTemp);

SubstanceArrSort[j].SpecificGravity = SpecificGravityTemp;

SubstanceArrSort[j].Conductivity = ConductivityTemp;

}

//=======================Вывод отсортированного массива на печеть

system("CLS");

cout<<" Отсортированный список веществ\n\n ";

cout<<"Наименование Удельный вес Проводимость[0 - нет, 1 - полу, 2 - да]\n\n";

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

{

cout<<SubstanceArrSort[i].Name<<" ";

gotoxy(21,4+i);

cout<<SubstanceArrSort[i].SpecificGravity<<" ";

gotoxy(40,4+i);

cout<<SubstanceArrSort[i].Conductivity<<"\n";

}

cout<<"\n\n";

system("PAUSE");

return 0;

}

 



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