Предмет: Информатика, автор: 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);
}​

Ответы

Автор ответа: flash77779
0

#include <iostream>

#include <vector>

#include <iomanip>

#include <algorithm>

#include <fstream>

using namespace std;

struct Handmade {

   char code[15];

   char tovar[27];

   char category[14];

   char oznaka[18];

   double len;

   int num;

   char country[18];

   double cost;

};

void Hat() {

   // Реалізація функції Hat() для виведення заголовків таблиці.

}

void Line() {

   // Реалізація функції Line() для виведення розділювача.

}

int AmountTovar(const char* fn) {

   // Реалізація функції AmountTovar() для розрахунку кількості товарів у файлі.

}

bool compareByNum(const Handmade& a, const Handmade& b) {

   return a.num < b.num;

}

void FiveProductLeast(const char* fn) {

   ifstream handmade_store(fn, ios::binary);

   vector<Handmade> products;

   Handmade temp;

   while (handmade_store.read(reinterpret_cast<char*>(&temp), sizeof(Handmade))) {

       products.push_back(temp);

   }

   sort(products.begin(), products.end(), compareByNum);

   for (size_t i = 0; i < 5 && i < products.size(); i++) {

       Handmade& a = products[i];

       Hat();

       cout << "| " << setw(3) << right << (i + 1) << " "

           << "| " << 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();

   }

   handmade_store.close();

}

Приложения:
Похожие вопросы
Предмет: Английский язык, автор: anna528677