@Kartoshech

Как сделать постраничный вывод из файла?

if (fin.is_open()) 
    {
        printf("==========================================================================================\n");
        printf("|Страна    ||Город     ||Отель     ||Класс отеля      ||Цена проживания   ||Цена поездки |\n");
        int i = 0;
        char list;
        fin.read(reinterpret_cast <char*>(&p), sizeof p);
        printf("|%10s||%10s||%10s||               %3.0f||          %7.0f||      %7.0f|\n", p[0].country, p[0].city, p[0].hotel, p[0].rate_hotel, p[0].price_hotel, p[0].price_travel);
        printf("==========================================================================================\n");
        cout << "<     " << "-" << "     >" << endl;
        cin >> list;
        while (list != '\0') {
            
            if (list == '>')
            {
                i = i + 1;
                for (int j = i + 1; j > i; i++)
                {

                    printf("|%10s||%10s||%10s||               %3.0f||          %7.0f||      %7.0f|\n", p[i].country, p[i].city, p[i].hotel, p[i].rate_hotel, p[i].price_hotel, p[i].price_travel);

                }
            }
            else if (list == '<') 
            {
            i = i - 1; 
            for (int j = i + 1; j > i; i++)
            {

                printf("|%10s||%10s||%10s||               %3.0f||          %7.0f||      %7.0f|\n", p[i].country, p[i].city, p[i].hotel, p[i].rate_hotel, p[i].price_hotel, p[i].price_travel);

            }
            }
            
            cout << "<     " << "-" << "     >" << endl;
            cin >> list;
        }
        cout << "\n";
    }
    fin.close();

Есть код вывода на экран. Надо сделать вывод постраничный. Я сделал пока по 1 элементу на страницу, но почему-то работает стрелочка вперёд и то только один раз, второй как будто перебрасывает непонятно куда, так а назад вообще не работает стрелочка и не понимаю что я тут мог напутать. В файле пока что только 3 строки и я между ними пробую играться. Не прошу сделать за меня, но хотяб направить на верную мысль
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
Lost_Universe
@Lost_Universe
Студент
1. fin.read(reinterpret_cast <char*>(&p), sizeof p);
Это неправильная запись. Ты записываешь в нулевой элемент структуры(класса) все данные(все страницы). Тут надо цикл который каждую "страницу" будет записывать в i-тый элемент структуры.

2.
...
 else if (list == '<') 
            {
            i = i - 1; 
...

Возвращение назад по странице. Нет проверки на отрицательное i. Если и будет меньше 0, программа вылетит с ошибкой "выход за границы массива".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы