
Текст программы
List_CARS.cpp |
|
#include "FormV.h" using namespace std; bool ListNodeV::ReadV(std::ifstream& input, std::ofstream& res){ if (input.eof()) return false; char s = 0; int counter = 0; f_H.head = new ListNodeH; f_H.cur = f_H.head; input >> f_H.cur->podstroka.nomer; input.unsetf(ios::skipws); while (s != '\n') { if (input.eof()) break; input >> s; if (s == ' ') { continue; } else { if (input.eof()) break; if (s == '\n' || s == 0) //!! if (s == '\n') break; f_H.cur->podstroka.massiv[counter] = s; ++counter; } if (counter >= N) { while (s != '\n') { input >> s; if (s == '\n' || s == 0) //!! if (s == '\n') break; } } } f_H.cur->podstroka.len = counter; return true;} void ListNodeV::PrintV(std::ofstream& res){ f_H.cur = f_H.head; if (f_H.head == nullptr) return; cout << "\n Номер: "; res << "\n Номер: "; cout << f_H.cur->podstroka.nomer; res << f_H.cur->podstroka.nomer; cout << "\n Марка автомобиля: "; res << "\n Марка автомобиля: "; for (int i = 0; i < f_H.cur->podstroka.len; i++) { cout << f_H.cur->podstroka.massiv[i]; res << f_H.cur->podstroka.massiv[i]; } cout << "\n Вес: "; res << "\n Вес: "; cout << f_H.cur->podstroka.Weight; cout << " кг\n Стоимость: "; res << " кг\n Стоимость: "; cout << f_H.cur->podstroka.Stoim; cout << " рублей\n Возможное количество: "; res << " рублей\n Возможное количество: "; cout << f_H.cur->podstroka.Kolvo; cout << "\n"; res << "\n"; }void ListNodeV::Print_CASE(std::ofstream& res, int CASE, int CASE_CAR, int PRICE1, int PRICE2, float LIGHT, float HEAVY){ f_H.cur = f_H.head; if (f_H.head == nullptr) return; int numm = f_H.cur->podstroka.nomer; if (numm == CASE_CAR) { if ((CASE == 1) || (CASE == 2)) { cout << "\n Марка автомобиля: "; res << "\n Марка автомобиля: "; for (int i = 0; i < f_H.cur->podstroka.len; i++) { cout << f_H.cur->podstroka.massiv[i]; res << f_H.cur->podstroka.massiv[i]; } cout << "\n Вес: "; res << "\n Вес: ";
|
cout << f_H.cur->podstroka.Weight; res << f_H.cur->podstroka.Weight; cout << " кг\n Стоимость: "; res << " кг\n Стоимость: "; cout << f_H.cur->podstroka.Stoim; res << f_H.cur->podstroka.Stoim; cout << " рублей\n Возможное количество: "; res << " рублей\n Возможное количество: "; cout << f_H.cur->podstroka.Kolvo; res << f_H.cur->podstroka.Kolvo; cout << "\n"; res << "\n"; if (CASE == 1) { if (f_H.cur->podstroka.Kolvo > 0) { cout << " Эту модель МОЖНО изготовить :)"; res << " Эту модель МОЖНО изготовить :)"; } else { cout << " Эту модель НЕЛЬЗЯ изготовить :("; res << " Эту модель НЕЛЬЗЯ изготовить :("; } } if (CASE == 2) { if (f_H.cur->podstroka.Kolvo > 0) { cout << " Можно произвести " << f_H.cur->podstroka.Kolvo << " машин"; res << " Можно произвести " << f_H.cur->podstroka.Kolvo << " машин"; } else { cout << " НЕЛЬЗЯ произвести ни одну машину :("; res << " НЕЛЬЗЯ произвести ни одну машину :("; } } } } if (CASE == 3) { if ((f_H.cur->podstroka.Stoim >= PRICE1) && (f_H.cur->podstroka.Stoim <= PRICE2)) { cout << "\n Марка автомобиля: "; res << "\n Марка автомобиля: "; for (int i = 0; i < f_H.cur->podstroka.len; i++) { cout << f_H.cur->podstroka.massiv[i]; res << f_H.cur->podstroka.massiv[i]; } cout << "\n Стоимость: "; res << "\n Стоимость: "; cout << f_H.cur->podstroka.Stoim; res << f_H.cur->podstroka.Stoim; cout << " рублей"; res << " рублей";} } if (CASE == 4) { if ((LIGHT == HEAVY)&&(LIGHT==f_H.cur->podstroka.Weight)){ cout << "\n Одинаковые по весу модели\n"; res << "\n Одинаковые по весу модели\n"; for (int i = 0; i < f_H.cur->podstroka.len; i++){ cout << f_H.cur->podstroka.massiv[i]; res << f_H.cur->podstroka.massiv[i]; } cout << " "; res << " "; cout << f_H.cur->podstroka.Weight; res << f_H.cur->podstroka.Weight; cout << " кг"; res << " кг"; return;} if (f_H.cur->podstroka.Weight == LIGHT) { cout << "\n Самая легкая модель: "; res << "\n Самая легкая модель: "; for (int i = 0; i < f_H.cur->podstroka.len; i++){ cout << f_H.cur->podstroka.massiv[i]; res << f_H.cur->podstroka.massiv[i];} cout << " "; cout << f_H.cur->podstroka.Weight; cout << " кг"; res << " "; res << f_H.cur->podstroka.Weight; res << " кг";} if (f_H.cur->podstroka.Weight == HEAVY) { cout << "\n Самая тяжелая модель: "; res << "\n Самая тяжелая модель: "; for (int i = 0; i < f_H.cur->podstroka.len; i++){ cout << f_H.cur->podstroka.massiv[i]; res << f_H.cur->podstroka.massiv[i];} cout << " "; cout << f_H.cur->podstroka.Weight; cout << " кг"; res << " "; res << f_H.cur->podstroka.Weight; res << " кг";}}} |
ListV.cpp |
|
#include "FormV.h" using namespace std; bool ListNodeV::ReadVDetails(std::ifstream& input, std::ofstream& res) { if (input.eof()) return false; char s = 0; int counter = 0; f_H.head = new ListNodeH; f_H.cur = f_H.head; input >> f_H.cur->podstroka.nomer; input.unsetf(ios::skipws); while (s != '\n') { if (input.eof()) break; input >> s; if (s == '@') break; if (s == ' ') { continue; } else { if (input.eof()) break; if (s == '\n') //!! if (s == '\n') break; f_H.cur->podstroka.massiv[counter] = s; ++counter; } if (counter >= N) { while (s != '\n') { input >> s; if (s == '\n' || s == 0) //!! if (s == '\n') break; } } } f_H.cur->podstroka.len = counter; input.setf(ios::skipws); input >> f_H.cur->podstroka.weight; input >> f_H.cur->podstroka.cena; input >> f_H.cur->podstroka.nomer2; input >> f_H.cur->podstroka.sklad; return true;} res << f_H.cur->podstroka.massiv[i]; } cout << "\nСостав модели: \n"; res << "\nСостав модели: \n"; } if (f_H.cur->podstroka.len2 == -1) { cout << " Ошибка! Деталь отсутствует в каталоге"; } else { cout << " "; res << " "; cout << f_H.cur->podstroka.numd; cout << ". "; res << ". "; for (int i = 0; i < f_H.cur->podstroka.len2; i++) { cout << f_H.cur->podstroka.massiv2[i]; res << f_H.cur->podstroka.massiv2[i]; } cout << " - "; res << " - "; cout << f_H.cur->podstroka.kol; res << f_H.cur->podstroka.kol; cout << " шт"; res << " шт"; } }}
|
void ListNodeV::PrintVDetails(std::ofstream& res) { f_H.cur = f_H.head; if (f_H.head == nullptr) return; cout << f_H.cur->podstroka.nomer; res << f_H.cur->podstroka.nomer; cout << ". "; res << ". "; for (int i = 0; i < f_H.cur->podstroka.len; i++) { cout << f_H.cur->podstroka.massiv[i]; res << f_H.cur->podstroka.massiv[i]; } cout << ". Вес: "; res << ". Вес: "; cout << f_H.cur->podstroka.weight; res << f_H.cur->podstroka.weight; cout << " Цена: "; res << " Цена: "; cout << f_H.cur->podstroka.cena; res << f_H.cur->podstroka.cena; cout << " Фирма: "; res << " Фирма: "; for (int i = 0; i < f_H.cur->podstroka.len2; i++) { cout << f_H.cur->podstroka.massiv2[i]; res << f_H.cur->podstroka.massiv2[i]; } cout << " Количество на складе: "; res << " Количество на складе: "; cout << f_H.cur->podstroka.sklad; res << f_H.cur->podstroka.sklad; cout << "\n"; res << "\n";} bool ListNodeV::ReadVInfo(std::ifstream& input, std::ofstream& res) { if (input.eof()) return false; char s = 0; f_H.head = new ListNodeH; f_H.cur = f_H.head; input.setf(ios::skipws); input >> f_H.cur->podstroka.nomer; input >> f_H.cur->podstroka.detal; input >> f_H.cur->podstroka.kol; return true; } void ListNodeV::PrintVInfo(std::ofstream& res) { f_H.cur = f_H.head; if (f_H.head == nullptr) return; if (f_H.cur->podstroka.len == -1) { cout << "\nОшибка! Такой машины нет в списке"; } else { if (f_H.cur->podstroka.prf == 5) { /*cout << "\n\nПорядковый номер: "; res << "\n\nПорядковый номер: "; cout << f_H.cur->podstroka.nomer; res << f_H.cur->podstroka.nomer;*/ cout << "\nНазвание модели: "; res << "\nНазвание модели: "; for (int i = 0; i < f_H.cur->podstroka.len; i++) { cout << f_H.cur->podstroka.massiv[i]; }
cout << " - "; res << " - "; cout << f_H.cur->podstroka.kol; res << f_H.cur->podstroka.kol; cout << " шт"; res << " шт"; }} |
StrL.h |
ListV.h |
|
#pragma once #include "ConstN.h" struct StrL{ int nomer; int nomer2 = 0;//номер фирмы char massiv[N]; char massiv2[N]; float weight = 0.0; // вес детали float Weight = 0.0; // вес машины int cena = 0; //цена детали int Stoim = 0; //цена машины int sklad = 0; //сколько деталей на складе int Kolvo = 0; // сколько наборов деталей int len = 0; // длина названия int len2 = 0; int detal = 0;//номер детали int kol = 0;//количество деталей для машины int prf = 0; int numd = 0; //f4}; All_func.h #pragma once #include "FormV.h" void FUNCTION(std::ofstream& res, FormularV& F2, FormularV& F3); void FUNCTION1(std::ofstream& res, std::ofstream& prot, FormularV& F1, FormularV& F2, FormularV& F3, FormularV& F4); void deleting(FormularV& formularVert, std::ofstream& res); bool Read_file(std::ifstream& input, std::ofstream& res, FormularV& formularVert); void Print_file(std::ofstream& res, FormularV& formularVert); void Print_BigCASE(std::ofstream& res, FormularV& formularVert, int CASE, int CASE_CAR, int PRICE1, int PRICE2); void Process(std::ofstream& res, std::ofstream& prot, std::string in_filename, std::string in_filename2, std::string in_filename3, std::string in_filename4); bool Read_fileDetails(std::ifstream& input, std::ofstream& res, FormularV& formularVert); void Print_fileDetails(std::ofstream& res, FormularV& formularVert); bool Read_fileINFO(std::ifstream& input, std::ofstream& res, FormularV& formularVert); void Print_fileINFO(std::ofstream& res, FormularV& formularVert);
ConstN.h #pragma once #include <string> #include <iostream> #include <fstream> #include <iomanip> static const int N = 15;
|
#pragma once #include "FormH.h" struct ListNodeV{ FormularH f_H; ListNodeV* next = nullptr; ListNodeV* next1 = nullptr; bool ReadV(std::ifstream& input, std::ofstream& res); void PrintV(std::ofstream& res); bool ReadVDetails(std::ifstream& input, std::ofstream& res); void PrintVDetails(std::ofstream& res); bool ReadVInfo(std::ifstream& input, std::ofstream& res); void PrintVInfo(std::ofstream& res); void Print_CASE(std::ofstream& res, int CASE, int CASE_CAR, int PRICE1, int PRICE2, float LIGHT, float HEAVY);};
ListH.h #pragma once #include "StrL.h" struct ListNodeH{ StrL podstroka; ListNodeH* next = nullptr;}; FormH.h
#pragma once #include "ListH.h" struct FormularH{ ListNodeH* head = nullptr; ListNodeH* cur = nullptr; ListNodeH* last = nullptr; ListNodeH* prev = nullptr;}; FormV.h #pragma once #include "ListV.h" struct FormularV{ ListNodeV* head = nullptr; ListNodeV* cur = nullptr; ListNodeV* last = nullptr; ListNodeV* prev = nullptr; float Lightt = 0.0; float Heavyy = 0.0;}; main.cpp #include "All_func.h" using namespace std; int main(int argc, char* argv[]){ setlocale(LC_ALL, "Russian"); std::string filename2 = "result.txt"; std::string filename3 = "protokol.txt"; std::ofstream res(filename2, ios::out | ios::trunc); std::ofstream prot(filename3, ios::out | ios::trunc); Process(res, prot, "cars.txt", "firms.txt", "details.txt", "info.txt"); return 0;} |
PROCESS.cpp |
|
#include "ConstN.h" #include "FormV.h" #include "All_func.h" using namespace std; bool Read_fileINFO(std::ifstream& input, std::ofstream& res, FormularV& formularVert){ if (input.eof()) { cout << "SPISOK PUST" << endl; return false; } formularVert.head = new ListNodeV; formularVert.cur = formularVert.head; while (!input.eof()) { if (formularVert.cur->ReadVInfo(input, res)) { formularVert.cur->next = new ListNodeV; formularVert.prev = formularVert.cur; formularVert.cur = formularVert.cur->next; } else break; } if (formularVert.cur->f_H.head == nullptr && formularVert.prev != nullptr) { delete formularVert.cur; formularVert.prev->next = nullptr; } return true;} void Print_fileINFO(std::ofstream& res, FormularV& formularVert){ cout << "\n=======================================\n Информация о составе автомобилей\n=======================================\n"; res << "\n=======================================\n Информация о составе автомобилей\n=======================================\n"; formularVert.cur = formularVert.head; while (formularVert.cur != nullptr){ formularVert.cur->PrintVInfo(res); cout << "\n"; res << "\n"; formularVert.cur = formularVert.cur->next;} cout << "\n\n"; res << "\n\n";} bool Read_fileDetails(std::ifstream& input, std::ofstream& res, FormularV& formularVert){ if (input.eof()){ cout << "SPISOK PUST" << endl; return false;} formularVert.head = new ListNodeV; formularVert.cur = formularVert.head; while (!input.eof()) { if (formularVert.cur->ReadVDetails(input, res)) { formularVert.cur->next = new ListNodeV; formularVert.prev = formularVert.cur; formularVert.cur = formularVert.cur->next; } else break; } if (formularVert.cur->f_H.head == nullptr && formularVert.prev != nullptr) { delete formularVert.cur; formularVert.prev->next = nullptr; } return true;} void Print_fileDetails(std::ofstream& res, FormularV& formularVert){ cout << "\n=======================================\n Каталог деталей\n=======================================\n"; res << "\n=======================================\n Каталог деталей\n=======================================\n"; formularVert.cur = formularVert.head; while (formularVert.cur != nullptr){ formularVert.cur->PrintVDetails(res); formularVert.cur = formularVert.cur->next;} cout << "\n\n"; res << "\n\n";} bool Read_file(std::ifstream& input, std::ofstream& res, FormularV& formularVert){ if (input.eof()){ cout << "SPISOK PUST" << endl; return false;} formularVert.head = new ListNodeV; formularVert.cur = formularVert.head; while (!input.eof()){ if (formularVert.cur->ReadV(input, res)){ formularVert.cur->next = new ListNodeV; formularVert.prev = formularVert.cur; formularVert.cur = formularVert.cur->next;} else break;} if (formularVert.cur->f_H.head == nullptr && formularVert.prev != nullptr){ delete formularVert.cur; formularVert.prev->next = nullptr;} return true;} void Print_file(std::ofstream& res, FormularV& formularVert){ formularVert.cur = formularVert.head; while (formularVert.cur != nullptr){ formularVert.cur->PrintV(res); formularVert.cur = formularVert.cur->next;} cout << "\n\n"; res << "\n\n";} void Print_BigCASE(std::ofstream& res, FormularV& formularVert, int CASE, int CASE_CAR, int PRICE1, int PRICE2) { formularVert.cur = formularVert.head; float LIGHT = formularVert.Lightt; float HEAVY = formularVert.Heavyy; while (formularVert.cur != nullptr) { formularVert.cur->Print_CASE(res, CASE, CASE_CAR, PRICE1, PRICE2, LIGHT, HEAVY); formularVert.cur = formularVert.cur->next;} cout << "\n\n"; res << "\n\n";} void deleting(FormularV& formularVert, std::ofstream& res){ formularVert.cur = formularVert.head; FormularV tmp4; if (formularVert.cur == nullptr){ cout << " Список пуст " << endl; res << " Список пуст " << endl;return;} while (formularVert.cur != nullptr){ FormularH tmp3; formularVert.cur->f_H.cur = formularVert.cur->f_H.head; while (formularVert.cur->f_H.cur != nullptr){ tmp3.cur = formularVert.cur->f_H.cur->next; delete formularVert.cur->f_H.cur; formularVert.cur->f_H.cur = tmp3.cur;} tmp4.cur = formularVert.cur->next; delete formularVert.cur; formularVert.cur = tmp4.cur;}} void FUNCTION(std::ofstream& res, FormularV& F2, FormularV& F3){ F3.cur = F3.head; // детали F3.prev = nullptr; // детали if (F3.cur == nullptr) // детали{ cout << " пустой верт. список! " << endl; return;} while (F3.cur != nullptr) // детали{ F2.cur = F2.head; // фирмы if (F2.cur == nullptr){ cout << " пустой второй верт. список! " << endl; return;} F2.prev = nullptr; // фирмы F3.cur->f_H.cur = F3.cur->f_H.head; // детали while (F2.cur != nullptr) // фирмы{ F2.cur->f_H.cur = F2.cur->f_H.head; int num2 = F3.cur->f_H.cur->podstroka.nomer2; int num1 = F2.cur->f_H.cur->podstroka.nomer; if (num2 == num1) { int lenn = F2.cur->f_H.cur->podstroka.len; F3.cur->f_H.cur->podstroka.len2 = lenn; for (int t = 0; t < lenn; t++) { F3.cur->f_H.cur->podstroka.massiv2[t] = F2.cur->f_H.cur->podstroka.massiv[t]; }} F2.prev = F2.cur; F2.cur = F2.cur->next;} F3.prev = F3.cur; F3.cur = F3.cur->next;}} void FUNCTION1(std::ofstream& res, std::ofstream& prot, FormularV& F1, FormularV& F2, FormularV& F3, FormularV& F4) { float light = pow(10,7); float heavy = -10; float number = 0; float VES = 0; int STOIMOST = 0; int NABOR = -10; F4.cur = F4.head; // ИНФО F4.prev = nullptr; // ИНФО if (F4.cur == nullptr) // инфо{ cout << " пустой верт. список! " << endl; return;} int PredNUM = -5; while (F4.cur != nullptr) // инфо{ F1.cur = F1.head; // машины if (F1.cur == nullptr){ cout << " пустой второй верт. список! " << endl; return;} F1.prev = nullptr; // машины F4.cur->f_H.cur = F4.cur->f_H.head; // инфо int numinf1 = F4.cur->f_H.cur->podstroka.nomer; if (PredNUM != numinf1) { if (PredNUM > 0) { if ((light >= VES)&&(VES!=0)) { light = VES; F1.Lightt = light;} if ((heavy <= VES) && (VES != 0)) { heavy = VES; F1.Heavyy = heavy;} F4.cur->f_H.cur->podstroka.prf = 5; prot << "\nСТОИМОСТЬ МАШИНЫ: " << STOIMOST << "\n"; prot << "\nВЕС МАШИНЫ: " << VES << "\n"; prot << "\nКОЛИЧЕСТВО МАШИН: " << NABOR << "\n"; VES = 0; STOIMOST = 0; NABOR = -100; prot << "\n НОВАЯ МАШИНА\n"; PredNUM = numinf1;} else { F4.cur->f_H.cur->podstroka.prf = 5; F1.Lightt = light; F1.Heavyy = heavy; prot << "\n НОВАЯ МАШИНА\n"; PredNUM = numinf1; }} int numinf2 = F4.cur->f_H.cur->podstroka.detal; int PROV = 0; while (F1.cur != nullptr) // vfi{ F1.cur->f_H.cur = F1.cur->f_H.head; int numcar = F1.cur->f_H.cur->podstroka.nomer; prot << "номер машины: " << numcar << " " << "номер из файла: " << numinf1 << "\n"; if (numcar == numinf1) { PROV = 1; prot << "совпадение\n"; int lenn = F1.cur->f_H.cur->podstroka.len; F4.cur->f_H.cur->podstroka.len = lenn; for (int t = 0; t < lenn; t++) { F4.cur->f_H.cur->podstroka.massiv[t] = F1.cur->f_H.cur->podstroka.massiv[t];} |
prot << "\nсравнение номеров деталей\n"; F3.cur = F3.head; // машины if (F3.cur == nullptr){ cout << " пустой второй верт. список! " << endl; return;} F3.prev = nullptr; // машины int prov = 0; while (F3.cur != nullptr) // детали{ F3.cur->f_H.cur = F3.cur->f_H.head; int numdet = F3.cur->f_H.cur->podstroka.nomer; prot << numdet << " " << numinf2 << "\n"; int lenn1 = 0; if (numdet == numinf2) { F4.cur->f_H.cur->podstroka.numd = numdet; prov = 1; prot << "совпадение\n"; lenn1 = F3.cur->f_H.cur->podstroka.len; F4.cur->f_H.cur->podstroka.len2 = lenn1; for (int t = 0; t < lenn1; t++) { F4.cur->f_H.cur->podstroka.massiv2[t] = F3.cur->f_H.cur->podstroka.massiv[t];} float ves1 = F3.cur->f_H.cur->podstroka.weight; float cena1 = F3.cur->f_H.cur->podstroka.cena; int kol1 = F4.cur->f_H.cur->podstroka.kol; int sklad_det = F3.cur->f_H.cur->podstroka.sklad; float vesO = ves1 * kol1; float cenaO = cena1 * kol1; prot << "Вес деталей одного типа: " << vesO << "\n";prot << "Стоимость деталей одного типа: " << cenaO << "\n"; prot << "Количество деталей на складе: " << sklad_det << "\n"; prot << "Сколько нужно деталей для машины: " << kol1 << "\n"; VES = (VES + vesO); STOIMOST = (STOIMOST + cenaO); int nabor_det = sklad_det / kol1; prot << "Сколько получится наборов деталей: " << nabor_det << "\n"; if (NABOR < 0) { NABOR = nabor_det;} else { if (NABOR > nabor_det) { NABOR = nabor_det;}} prot << "сколько можно собрать машин из этих деталей: " << nabor_det << "\n"; F1.cur->f_H.cur->podstroka.Weight = VES; F1.cur->f_H.cur->podstroka.Stoim = STOIMOST; F1.cur->f_H.cur->podstroka.Kolvo = NABOR; break;} else { prov = 2; } // номер не совпал F3.prev = F3.cur; F3.cur = F3.cur->next;} if (prov == 2) { // если ни один номер не совпал, значит такого нет F4.cur->f_H.cur->podstroka.len2 = -1;} break;} else { PROV = 2; } // номер не совпал F1.prev = F1.cur; F1.cur = F1.cur->next;} if (PROV == 2) { // если ни один номер не совпал, значит такого нет F4.cur->f_H.cur->podstroka.len = -1;} F4.prev = F4.cur; F4.cur = F4.cur->next;} prot << "\nСТОИМОСТЬ МАШИНЫ: " << STOIMOST << "\n"; prot << "\nВЕС МАШИНЫ: " << VES << "\n"; prot << "\nКОЛИЧЕСТВО МАШИН: " << NABOR << "\n"; if ((light >= VES) && (VES != 0)) { light = VES; F1.Lightt = light;} if ((heavy <= VES) && (VES != 0)) { heavy = VES; F1.Heavyy = heavy;} prot << "\n\nсамый тяжелый: " << heavy; prot << "\n\nсамый легкий: " << light << "\n";} void Process(std::ofstream& res, std::ofstream& prot, std::string in_filename, std::string in_filename2, std::string in_filename3, std::string in_filename4){ ifstream cars; ifstream firms; ifstream details; ifstream info; cars.open(in_filename, std::ios_base::in); firms.open(in_filename2, std::ios_base::in); details.open(in_filename3, std::ios_base::in); info.open(in_filename4, std::ios_base::in); FormularV f1; FormularV f2; FormularV f3; FormularV f4; if (Read_file(cars, res, f1)) { ; } if (Read_file(firms, res, f2)) { ; } if (Read_fileDetails(details, res, f3)){ FUNCTION(res, f2, f3); Print_fileDetails(res, f3);} if (Read_fileINFO(info, res, f4)){ prot << " процесс: " << "\n\n";} FUNCTION1(res, prot, f1, f2, f3, f4); Print_fileINFO(res, f4); cout << "\nСписок автомобилей\n\n"; res << "\n\n Список автомобилей\n\n"; Print_file(res, f1); cout << " Список команд:\n"; cout << " 1 - Определить, можно ли произвести конкретную модель по запасу на складе, её вес и стоимость\n"; cout << " 2 - Определить сколько можно произвести автомобилей конкретной модели\n";cout << " 3 - Определить, какие модели можно произвести из определенного ценового диапазона\n"; cout << " 4 - Выделить модели по весу (самую легкую и самую тяжелую)\n"; res << " Список команд:\n"; res << " 1 - Определить, можно ли произвести конкретную модель по запасу на складе, её вес и стоимость\n"; res << " 2 - Определить сколько можно произвести автомобилей конкретной модели\n";res << " 3 - Определить, какие модели можно произвести из определенного ценового диапазона\n"; res << " 4 - Выделить модели по весу (самую легкую и самую тяжелую)\n"; int Case = -1; int Case_car = -1; int Price1 = -1; int Price2 = -1; while (Case != 0) { cout << "\n -"; cout << "\n * Чтобы закончить работу, введите 0"; cout << "\n * Чтобы ещё раз вывести каталог деталей, введите 5"; cout << "\n * Чтобы ещё раз вывести информацию о составе автомобилей, введите 6"; cout << "\n * Чтобы ещё раз вывести список автомобилей, введите 7"; cout << "\n * Чтобы выполнилась команда, введите от 1 до 4 >> "; res << "\n -"; res << "\n * Чтобы закончить работу, введите 0"; res << "\n * Чтобы ещё раз вывести каталог деталей, введите 5";res << "\n * Чтобы ещё раз вывести информацию о составе автомобилей, введите 6";res << "\n * Чтобы ещё раз вывести список автомобилей, введите 7"; res << "\n * Чтобы выполнилась команда, введите от 1 до 4 >> "; cin >> Case; if ((Case > 7) || (Case < 0)) { cout << "\n Это некорректный номер!"; res << "\n Это некорректный номер!"; continue;} if (Case == 0) { cout << "\n Работа закончена."; res << "\n Работа закончена."; break;} if (Case == 5) { Print_fileDetails(res, f3); continue;} if (Case == 6) { Print_fileINFO(res, f4);; continue; } if (Case == 7) { cout << "\n\n Список автомобилей\n\n"; res << "\n\n Список автомобилей\n\n"; Print_file(res, f1); continue; } if ((Case >= 1) || (Case <= 4)) { cout << "\n Выбрана команда " << Case; res << "\n Выбрана команда " << Case; if ((Case == 1) || (Case == 2)) { cout << "\n Введите номер модели >> "; res << "\n Введите номер модели >> "; cin >> Case_car; if (Case_car <= 0) { cout << "\n - !Номер машины должен быть положительным числом!\n"; res << "\n - !Номер машины должен быть положительным числом!\n"; } else { Print_BigCASE(res, f1, Case, Case_car, Price1, Price2);}} if (Case == 3) { cout << "\n Введите левую границу диапазона >> "; cin >> Price1; cout << " Введите правую границу диапазона >> "; cin >> Price2; if ((Price1 < 0) || (Price2 < 0)) { cout << " - !Границы диапазона должен быть положительными числами!\n"; res << " - !Границы диапазона должен быть положительными числами!\n"; continue;} else if (Price1 > Price2) { cout << " - !Левая граница не может быть больше правой!\n";res << " - !Левая граница не может быть больше правой!\n"; continue;} else {cout << "\n Автомобили, попавшие в ценовой диапазон:\n"; res << "\n Автомобили, попавшие в ценовой диапазон:\n"; Print_BigCASE(res, f1, Case, Case_car, Price1, Price2);}} if (Case == 4) { Print_BigCASE(res, f1, Case, Case_car, Price1, Price2);}} } deleting(f1, res); cout << "\n Список 1 удален\n"; deleting(f2, res); cout << " Список 2 удален\n"; deleting(f3, res); cout << " Список 3 удален\n"; deleting(f4, res); cout << " Список 4 удален\n";} |
Результаты работы программы
Входные файлы:
cars.txt
firms.txt
details.txt
info.txt
result.txt
Фрагмет из файла protokol.txt
ЗАКЛЮЧЕНИЕ
При выполнении данной курсовой работы были закреплены знания, полученные в
течение обучения во 2 семестре.