Здравствуйте, помогите пожалуйста разобраться почему программа работает некорректно. Это проявляется в роботе 1,3,5 пунктов меню.
Swap.h
Код:
#pragma once
#include<iostream>
#include<Windows.h>
#include<string>
#include<cstring>
#include"pch.h"
#include"Swap.h"
#include"Jaguar.h"
using namespace std;
int KolElFronFile(string nameFile);
void ReadFromFileAboutJaguar(Jaguar *J, string nameFile);
void WriteInFileJaguar(string nameF, Jaguar *J, int n);
void WriteInFileInputJaguar(string nameF, Jaguar *J, int n);
void WriteInFileInputJaguar(int n, string nameF, Jaguar *J);
Swap.cpp
#include"pch.h"
#include"Swap.h"
int KolElFronFile(string nameFile)
{
ifstream fin(nameFile);
int k;
if (fin.is_open())
{
fin >> k;
}
else
cout << "Ошибка открытия файла.\n";
fin.close();
return k;
}
void ReadFromFileAboutJaguar(Jaguar * J, string nameFile)
{
ifstream fin(nameFile);
int k;
string M;
int Y;
Body_and_dimensions B;
Engine_and_fuel E;
Other_characteristics O;
if (fin.is_open())
{
fin >> k;
for (int i = 0; i < k; i++)
{
fin >> M;
fin >> Y;
fin >> B.body_type
>> B.number_of_seats
>> B.number_of_doors
>> B.length_mm
>> B.width_mm
>> B.height_mm
>> B.ground_clearance_mm
>> B.tire_size
>> B.wheelbase_mm
>> B.wheel_track_front_mm
>> B.wheel_track_behind_mm
>> B.volume_of_luggage_l
>> B.fuel_tank_capacity_l
>> B.equipped_weight_kg
>> B.gross_weight;
fin >> E.engine_Type
>> E.engine_capacity_cubic_cm
>> E.power_hp_on_rpm
>> E.torque_Nm_on_rpm
>> E.boost
>> E.engine_Location
>> E.power_system
>> E.fuel_Type
>> E.consumption_liters_per_100_km
>> E.valves_per_cylinder;
fin >> O.drive_unit
>> O.maximum_speed_km_on_h
>> O.acceleration_to_100_km_per_hour_sec
>> O.front_suspension
>> O.rear_suspension
>> O.front_brakes
>> O.rear_brakes;
J[i].SetParametrs(M, Y, B, E, O); //Дадавання поля в масив
}
}
else // Інакше
{
cout << "Ошибка открытия файла.\n";
}
fin.close(); //Закриваємо файл
}
void WriteInFileJaguar(string nameF, Jaguar * J, int n)
{
ofstream fout(nameF, std::ios::out);
if (fout.is_open())
{
for (int i = 0; i < n; i++)
{
J[i].AddToFile(nameF);
}
}
else
cout << "Ошибка открытия файла "OutputApartment.txt".\n";
fout.close(); //Закриваємо файл
}
void WriteInFileInputJaguar(string nameF, Jaguar * J, int n)
{
ofstream fout(nameF, std::ios::out); //Створюємо об'єкт, який відкриває файл для запису та перезаписує інформацію
if (fout.is_open()) //Якщо файл відкрився
{
fout << n - 1 << endl; //Зменшуємо кількість
for (int i = 0; i < n; i++)
{
J[i].AddToFile1(nameF); //Додаємо інформацію в файл
}
}
else // Інакше
cout << "Ошибка открытия файла "OutputApartment.txt".\n";
fout.close(); //Закриваємо файл
}
void WriteInFileInputJaguar(int n, string nameF, Jaguar * J)
{
ofstream fout(nameF, std::ios::out); //Створюємо об'єкт, який відкриває файл для запису та перезаписує інформацію
if (fout.is_open()) //Якщо файл відкрився
{
fout << n << endl; //Зменшуємо кількість
for (int i = 0; i < n; i++)
{
J[i].AddToFile1(nameF); //Додаємо інформацію в файл
}
}
else // Інакше
cout << "Ошибка открытия файла "OutputApartment.txt".\n";
fout.close(); //Закриваємо файл
}
Jaguar.h
#pragma once //Для того щоб, якщо файл викликаэться більше одного разу не було помилок
#include"pch.h"
#include<iostream>
#include<cstring>
#include<string>
#include<string.h>
#include<fstream> //Підключення бібліотек
using namespace std; //Підключення простору імен
struct Body_and_dimensions //Структура характеристик кузова и габаритів
{
string body_type; //Тип кузова
int number_of_seats; //Кількість місць
int number_of_doors; //Кількість дверей
int length_mm; //Довжина, мм
int width_mm; //Ширина, мм
int height_mm; //Висота, мм
int ground_clearance_mm; //Кліренс, мм
int tire_size; //Розмір шин
int wheelbase_mm; //Колісна база, мм
int wheel_track_front_mm; //Колія коліс спереду, мм
int wheel_track_behind_mm; //Колія коліс ззаду, мм
int volume_of_luggage_l; //Об'єм багажника, л
int fuel_tank_capacity_l; //Об'єм паливного бака, л
int equipped_weight_kg; //Споряджена маса, кг
int gross_weight; //Повна маса
};
struct Engine_and_fuel // Структура характеристик двигуна та топлива
{
string engine_Type; //Тип двигуна
int engine_capacity_cubic_cm; //Об'єм двигуна, куб. см
int power_hp_on_rpm; //Потужність, л.с./об мін
int torque_Nm_on_rpm; //Крутний момент, Нм / об мін
string boost; //Наддув
string engine_Location; //Розташування двигуна
string power_system; //Система живлення
string fuel_Type; //Тип палива
float consumption_liters_per_100_km; //Витрата, л на 100 км
int valves_per_cylinder; //Клапанів на циліндр
};
struct Other_characteristics //Структура інших характерисктик
{
string drive_unit; //Привід
int maximum_speed_km_on_h; //Максимальна швидкість, км / год
int acceleration_to_100_km_per_hour_sec; //Розгін до 100 км / год, в секундах
string front_suspension; //Підвіска передня
string rear_suspension; //Підвіска задня
string front_brakes; //Гальма передні
string rear_brakes; //Гальма задні
};
class Jaguar //Опис класу моделей машин Ягуар
{
//Опис полів класу
private: //Закрита частина класу
string modelCare; //Модель автомобіля
int year; //Рік
Body_and_dimensions body_and_dimensions; //Характеристика кузова и габаритів
Engine_and_fuel engine_and_fuel; //Характеристика двигуна та топлива
Other_characteristics other_characteristics; //Інші характерисктики
//Опис методів класу
public: //Відчинена частина класу
//Обов'язкові методи
Jaguar(); //Конструктор по умолчанію, буде створювати пустий об'єкт
Jaguar(string M, int Y, Body_and_dimensions B, Engine_and_fuel E, Other_characteristics O); //Конструктор з параметрами, буде створювать об'єкт
~Jaguar(); //Диструктор, удаляє об'єкт
//Потрібні нам методи
void Print(); //Друк
void SetParametrs(string M, int Y, Body_and_dimensions B, Engine_and_fuel E, Other_characteristics O); //Задаємо параметри
//Отримуємо параметри
string GetModelCare() { return modelCare; };
int GetYear() { return year; };
Body_and_dimensions GetBody_and_dimensions() { return body_and_dimensions; };
Engine_and_fuel GetEngine_and_fuel() { return engine_and_fuel; };
Other_characteristics GetOther_characteristics() { return other_characteristics; };
void AddToFile(string NameF); //Додавання до файлу
void AddToFile1(string NameF); //Додавання до файлу
};
Пожалуйста, оформляйте Ваш код согласно правилам.
Jaguar.txt