Имеется код:
struct orders {
string product;
string mark;
string surname;
string name;
string secondName;
string phoneNumber;
int cost;
int dayOfRecept;
int monthOfRecept;
int yearOfRecept;
int dayOfIssue;
int monthOfIssue;
int yearOfIssue;
bool status;
};
void showOredrsFile(orders Orders) {
cout << endl;
ifstream file("order.txt");
int i = 0;
cout << "\t\tOrders" << endl;
while (file >> Orders.product >> Orders.mark >> Orders.surname >> Orders.name >> Orders.secondName >> Orders.phoneNumber >> Orders.cost >> Orders.dayOfRecept >> Orders.monthOfRecept
>> Orders.yearOfRecept >> Orders.dayOfIssue >> Orders.monthOfIssue >> Orders.yearOfIssue >> Orders.status) {
cout << i << " " << Orders.product << " " << Orders.mark << " " << Orders.surname << " " << Orders.name << " " << Orders.secondName << " " << Orders.phoneNumber << " " <<
Orders.cost << " " << Orders.dayOfRecept << " " << Orders.monthOfRecept << " " << Orders.yearOfRecept << " " << Orders.dayOfIssue << " " << Orders.monthOfIssue << " " <<
Orders.yearOfIssue << " " << Orders.status << endl;
i++;
}
file.close();
if (i == 0) {
cout << "There're no orders now!" << endl;
}
cout << endl;
}
void addOrder(orders Orders) {
ofstream file("order.txt", ios_base::app);
cout << "Enter the product" << endl;
cin >> Orders.product;
cout << "Enter the mark" << endl;
cin >> Orders.mark;
cout << "Enter the surname" << endl;
cin >> Orders.surname;
cout << "Enter the name" << endl;
cin >> Orders.name;
cout << "Enter the second name" << endl;
cin >> Orders.secondName;
cout << "Enter the phone number" << endl;
cin >> Orders.phoneNumber;
cout << "Enter the cost" << endl;
cin >> Orders.cost;
cout << "Enter the day of recept" << endl;
cin >> Orders.dayOfRecept;
cout << "Enter the month of recept" << endl;
cin >> Orders.monthOfRecept;
cout << "Enter the year of recept" << endl;
cin >> Orders.yearOfRecept;
cout << "Enter the day of issue" << endl;
cin >> Orders.dayOfIssue;
cout << "Enter the month of issue" << endl;
cin >> Orders.monthOfIssue;
cout << "Enter the year of issue" << endl;
cin >> Orders.yearOfIssue;
cout << "Enter the status" << endl;
cin >> Orders.status;
file << Orders.product << " " << Orders.mark << " " << Orders.surname << " " << Orders.name << " " << Orders.secondName << " " << Orders.phoneNumber << " " <<
Orders.cost << " " << Orders.dayOfRecept << " " << Orders.monthOfRecept << " " << Orders.yearOfRecept << " " << Orders.dayOfIssue << " " << Orders.monthOfIssue
<< " " << Orders.yearOfIssue << " " << Orders.status <<"\n";
file.close();
cout << "Order added!" << endl;
}
void editOrdersFile(orders Orders) {
vector <orders> ord;
ifstream file("orders.txt");
while (file >> Orders.product >> Orders.mark >> Orders.surname >> Orders.name >> Orders.secondName >> Orders.phoneNumber >> Orders.cost >> Orders.dayOfRecept >> Orders.monthOfRecept
>> Orders.yearOfRecept >> Orders.dayOfIssue >> Orders.monthOfIssue >> Orders.yearOfIssue >> Orders.status) {
ord.push_back(Orders);
}
file.close();
showOredrsFile(Orders);
cout << "Enter the number of order, you want to edit" << endl;
int choise = 0;
cin >> choise;
cout << "Enter the product" << endl;
cin >> Orders.product;
cout << "Enter the mark" << endl;
cin >> Orders.mark;
cout << "Enter the surname" << endl;
cin >> Orders.surname;
cout << "Enter the name" << endl;
cin >> Orders.name;
cout << "Enter the second name" << endl;
cin >> Orders.secondName;
cout << "Enter the phone number" << endl;
cin >> Orders.phoneNumber;
cout << "Enter the cost" << endl;
cin >> Orders.cost;
cout << "Enter the day of recept" << endl;
cin >> Orders.dayOfRecept;
cout << "Enter the month of recept" << endl;
cin >> Orders.monthOfRecept;
cout << "Enter the year of recept" << endl;
cin >> Orders.yearOfRecept;
cout << "Enter the day of issue" << endl;
cin >> Orders.dayOfIssue;
cout << "Enter the month of issue" << endl;
cin >> Orders.monthOfIssue;
cout << "Enter the year of issue" << endl;
cin >> Orders.yearOfIssue;
cout << "Enter the status" << endl;
cin >> Orders.status;
ord[choise] = Orders;
ofstream file1("orders.txt");
for (int i = 0; i < ord.size(); i++) {
file1 << ord[i].product << " " << ord[i].mark << " " << ord[i].surname << " " << ord[i].name << " " << ord[i].secondName << " " << ord[i].phoneNumber << " " <<
ord[i].cost << " " << ord[i].dayOfRecept << " " << ord[i].monthOfRecept << " " << ord[i].yearOfRecept << " " << ord[i].dayOfIssue << " " << ord[i].monthOfIssue
<< " " << ord[i].yearOfIssue << " " << ord[i].status << "\n";
}
}
Задача - изменение информации о выбранном заказе и запись обновленной информации в файл. Однако при вводе новых данных о заказе выводит ошибку "Vector subscript out of range". В чем ошибка?
В функции editOrdersFile
вы открываете файл, заполняете вектор заказами из файла, потом вы снова открываете тот же файл, когда вызываете showOredrsFile(Orders);
и выводите из файла все заказы. Ну это еще не ответ к вопросу, хотя состояние вашего файла уже не есть good
.
cin >> choise;
неизвестно чем вы инициализировали choise
, но зато вы спокойно производите присваивание
ord[choise] = Orders;
с чего вы взяли, что вектор имеет более чем choise элементов?.. Компилятор ругается именно из за этого, но в целом код лучше пишите заново, а то это больше похоже на безобразие, чем на код...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не понимаю, что не так с моим алгоритмом, но на сайте выдает что ошибка на одном из тестов проверкиОшибка в реализации алгоритма или в самом...
Всем приветЕсть задача , если запустить через консоль , то всё выдает как нужно
Добрый день, подскажите пожалуйстакак сделать так, чтобы отображался процесс скачивания файла в консоли?