Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2015, 11:52   #1
whoami30
Пользователь
 
Регистрация: 08.12.2015
Сообщений: 14
По умолчанию Вывод данных из вектора

Подскажите пожалуйста, почему у меня в switch, при нажатии на "n"-переход на след. страницу на секунды появляется то, что в указано default, пропадает и появляется след. страница, тоже самое с условием if, если максимальная страница выводить информацию о конце теории. Только пожалуйста подскажите, а не исправьте.
Код:
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
 
int main()
{
 
   setlocale(0,"rus");
   char name[]="teoria.txt";
   vector<string> v;
   string str;
   ifstream fout(name);
   if (!fout)
   {
       cout<<"Файл с исходными данными не найдет \n Создайте файл с именем "<<name<<endl;
   }
   else
   {
       while(!fout.eof())
       {
           getline(fout,str);
           v.push_back(str);
       }
   }
    int page = 0, maxpage = v.size() / 13 + (v.size() % 13 > 0 ? 1 : 0); 
 
    while (true)
    {
        system ("cls");
        for (int i = 0; i < 12; ++i)
        {
            if (page * 12 + i == v.size()) break;
            cout << v[page * 12 + i] << endl;
        }
 
        cout<<"\nДля перехода на следующую страницу нажмите 'n'\nДля перехода на предыдущую страницу нажмите 'b'\n ->";
        switch(cin.get())
        {
                case 'n':
                    {
                        if (page + 1 < maxpage) ++page;
                        break;
                        
                    }
                case 'b':
                    {
                        if (page > 0) --page;
                        break;
                    }
                default:
                    {
                        system("cls");
                        cout <<"\nОШИБКА! НЕПРАВИЛЬНОЕ НАЖАТИЕ КЛАВИШИ!"<< endl;
                        cout <<"Следующая страница 'n'\nВозврат на предыдущую 'b'\nВернуться в меню 'm'\n";
                    }
        }
        if (maxpage)
        {
            {
            system("cls");
            cout <<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n                               ЗАВЕРШЕНИЕ ТЕОРИИ     "<<endl;
            }
        }
    }
    system ("pause");
    return 0;
whoami30 вне форума Ответить с цитированием
Старый 14.12.2015, 16:22   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Enter же нажимаете? Так вот этот символ(ы?) тоже считывается, поэтому попадаем в default.
Croessmah вне форума Ответить с цитированием
Старый 14.12.2015, 17:11   #3
whoami30
Пользователь
 
Регистрация: 08.12.2015
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Enter же нажимаете? Так вот этот символ(ы?) тоже считывается, поэтому попадаем в default.
А как мне исключить в программе нажатие 'enter', просто до этого никогда не сталкивался. И еще странная проблема, если я ввожу отличные символы от b и n ничего не происходит. Вроде все делаю верно
whoami30 вне форума Ответить с цитированием
Старый 14.12.2015, 17:17   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Всё стерли, вывели ошибку, опять всё стерли.
Это происходит очень быстро :-)
Croessmah вне форума Ответить с цитированием
Старый 14.12.2015, 17:25   #5
whoami30
Пользователь
 
Регистрация: 08.12.2015
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Всё стерли, вывели ошибку, опять всё стерли.
Это происходит очень быстро :-)
Цитата:
Т.е. ставить system("pause")?
Просто если я это делаю, то возврат к страницам со второго раза проходит. Т.е. если я ввел отличное значение от b и n, выходит ошибка, за счет system("pause") происходит остановка, нажимаю любую клавишу, снова выходит ошибка, нажимаю еще раз и возвращаюсь к тексту. За счет чего так?
Решил вопрос с ошибкой. Вопрос по поводу окончание теории. Хочу поставить условие if (page+1>=maxpage) выводится сообщение о том, что конец теории и предложить вернутся к первой странице или выйти из цикла. В свиче это делать смысла нет? за пределами? Как лучше реализовать это??

Последний раз редактировалось whoami30; 14.12.2015 в 17:40.
whoami30 вне форума Ответить с цитированием
Старый 14.12.2015, 18:53   #6
whoami30
Пользователь
 
Регистрация: 08.12.2015
Сообщений: 14
По умолчанию

Дописал, спасибо!
whoami30 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод текста из вектора. whoami30 Помощь студентам 6 09.12.2015 11:11
Вывод вектора в Memo Sumy-ua C++ Builder 4 13.05.2013 15:10
Вывод вектора из строки матрицы trad Помощь студентам 0 17.02.2011 20:33
Заполнение вектора и вывод значений элемента Владюшка Помощь студентам 5 27.01.2010 13:53
Вывод содержимого вектора на экран lelik759 Помощь студентам 1 05.11.2009 00:07