Предмет: Информатика, автор: anastasiyafomina353

С++ Перетворіть код так, щоб виводилось 5 найменших за кількістю товара. Кількість товару - a.num

void FiveProductLeast(const char* fn) {
Handmade a, b;
int n = 0;
int amount = AmountTovar(fn);
fopen_s(&handmade_store, fn, "rb");
do {
fread(&a, sizeof(Handmade), 1, handmade_store);
for (size_t i = 0; i < amount - 1; i++)
{
fseek(handmade_store, sizeof(Handmade) * (i + 1), SEEK_SET);
fread(&b, sizeof(Handmade), 1, handmade_store);
n++;
if (a.num > b.num) {
for (int i = 0; i < 5; i++) {
Hat();
cout << "| " << setw(3) << right << n << " "
<< "| " << setw(14) << left << a.code << " "
<< "| " << setw(26) << left << a.tovar << " "
<< "| " << setw(13) << left << a.category << " "
<< "| " << setw(17) << left << a.oznaka << " "
<< "| " << setw(8) << right << fixed << setprecision(3) << a.len << " "
<< "| " << setw(5) << right << a.num << " "
<< "| " << setw(17) << left << a.country << " "
<< "| " << setw(9) << right << setprecision(2) << a.cost << " "
<< " |" << endl;
Line();
}
}
}
} while (true);
fclose(handmade_store);
}​

Ответы

Автор ответа: kurennojarsenij
0
void FiveProductLeast(const char* fn) {
Handmade a;
std::vector least(5, Handmade());
std::sort(least.begin(), least.end(), [](const Handmade& a, const Handmade& b) { return a.num < b.num; });
int n = 0;
int amount = AmountTovar(fn);
fopen_s(&handmade_store, fn, "rb");
while (fread(&a, sizeof(Handmade), 1, handmade_store)) {
if (a.num < least.back().num) {
least.back() = a;
std::sort(least.begin(), least.end(), [](const Handmade& a, const Handmade& b) { return a.num < b.num; });
}
}
fclose(handmade_store);

Hat();
cout << "| " << setw(3) << right << "N" << " "
<< "| " << setw(14) << left << "Code" << " "
<< "| " << setw(26) << left << "Tovar" << " "
<< "| " << setw(13) << left << "Category" << " "
<< "| " << setw(17) << left << "Oznaka" << " "
<< "| " << setw(8) << right << "Len" << " "
<< "| " << setw(5) << right << "Num" << " "
<< "| " << setw(17) << left << "Country" << " "
<< "| " << setw(9) << right << "Cost" << " "
<< " |" << endl;
Line();
for (const auto& a : least) {
Hat();
cout << "| " << setw(3) << right << ++n << " "
<< "| " << setw(14) << left << a.code << " "
<< "| " << setw(26) << left << a.tovar << " "
<< "| " << setw(13) << left << a.category << " "
<< "| " << setw(17) << left << a.oznaka << " "
<< "| " << setw(8) << right << fixed << setprecision(3) << a.len << " "
<< "| " << setw(5) << right << a.num << " "
<< "| " << setw(17) << left << a.country << " "
Похожие вопросы
Предмет: Математика, автор: ersovapolina70
Предмет: Математика, автор: nikita00009
Срочно плз :) времени нету, буду благодарен!!!

1. Какое из следующих чисел делится на 9?
1) 928 2) 981 3) 289 4) 988


2. Наибольший общий делитель чисел 675 и 825 равен
1) 75 2) 25 3) 675 4) 225
3. Найдите значение выражения 1,2 :

1)0,48 2) 3 3)1,25 4) свой ответ
4. Найдите значение выражения 4
1)1 2)1 3)2 4) свой ответ
5. Найдите значение выражения 1,8 –( − 0,75) – 0,5
1) 1,33 2) –1,55 3) 1,55 4) 2,05

6. В игре приняли участие 20 девочек. Это - от числа всех игроков. Сколько было игроков?
1)25 2)16 3)24 4) свой ответ


7. Решите уравнение 3(2х − 8) − (4х + 2) = 0
1) 11 2)127 3) –13 4) 13


8. Теплоход проходит по течению реки за 1 час 38 км. Скорость течения реки
4 км/час. Какое расстояние пройдет теплоход за 1 час против течения реки?
1)30 2)34 3)42 4) свой ответ


9. Длина окружности равна 14 см. Найдите ее диаметр. Ответ округлите до сотых.
1) 2,23; 2) 3,34; 3) 4,46; 4) свой ответ


2 ВАРИАНТ

1. Какое из следующих чисел делится на 3?
1) 927 2) 980 3) 289 4) 958

2. Наибольший общий делитель чисел 576 и 810 равен
1) 30 2) 24 3) 18 4) 6

3. Найдите значение выражения 6,4 :
1) 1/16 2) 16 3)1,25 4) свой ответ

4. Найдите значение выражения 6
1)1 2)1 3)2 4) свой ответ


5. Найдите значение выражения 1,9 +( − 0,75) – 3,5
1) 6,15 2) –2,35 3) -0,85 4) 2,35


6. В игре приняли участие 15 девочек. Это - от числа всех игроков. Сколько было игроков?
1)9 2)45 3)25 4) свой ответ

7. Решите уравнение 3(0,1х − 8) − (0,4х + 4) = 0
1) -280 2)280 3) –40 4) свой ответ

8. Теплоход проходит против течения реки за 1 час 28 км. Скорость течения реки
3 км/час. Какое расстояние пройдет теплоход за 1 час по течению реки?
1)30 2)34 3)42 4) свой ответ


9. Найди объем куба со стороной 1,6 м. Ответ округлите до сотых.
1) 4,09; 2) 4,1; 3) 4,10; 4) 2,56