Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
ВиталийZ
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 12
#1

Почему не выполняется один из операторов ввода,помеченые * - C++

25.12.2008, 12:31. Просмотров 2008. Ответов 11
Метки нет (Все метки)

Один из операторов ввода при повторной работе практически всегда пропускается
Код
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
void main ()
{ 
int i=2,k;
    char s[300],s1;
    i=2; k=2;
    while(i>0)
    {
        cout<<" Input data(1 or other) "<<endl; 
        cin>>k;
    switch(k)
    {
        case 1 :    
        {
            i=2;
            cout<<"Input data"<<endl;
            gets(s); //*
            //cin.getline(s,200,'\n'); // или этот
            cout<<s<<endl;
            cout<<"Continue ?(y,n)"<<endl;
            cin>>s1; //*
            if(s1 !='y') 
                i=-2;
        };
        break;
        default:
        i=-2;
    }
}         
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
25.12.2008, 15:52     Почему не выполняется один из операторов ввода,помеченые * #2
Потому, что /* открывает мульти-строчный комментарий. RTFM.
ВиталийZ
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 12
26.12.2008, 11:39  [ТС]     Почему не выполняется один из операторов ввода,помеченые * #3
Не понял! Убираем оба комментария //*,а один из операторов ввода даже если использовать аналогичные операторы ввода всеравно не выполняется. Почему?
Приходится только дублировать операторы ввода.
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
26.12.2008, 12:10     Почему не выполняется один из операторов ввода,помеченые * #4
Иногда в буффере ввода могут остаться символы. И когда следующая ф-ция, которая "забирает" из потока символ выполняется, она даже не требует пользователя ввести что-то, а просто берет те символы, которые остались от предыдущего ввода.
ВиталийZ
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 12
28.12.2008, 22:07  [ТС]     Почему не выполняется один из операторов ввода,помеченые * #5
И как же поступить? Перед очередным вводом очистить буфер? Напомните как правильно записать очистку буфера.
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,340
28.12.2008, 23:07     Почему не выполняется один из операторов ввода,помеченые * #6
Код
cin.flush();
ВиталийZ
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 12
31.12.2008, 11:27  [ТС]     Почему не выполняется один из операторов ввода,помеченые * #7
Такой команды cin.flush() нет(уменя пишет, что это не базовая команда istream), а cin.clear() не помогает.
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
01.01.2009, 16:07     Почему не выполняется один из операторов ввода,помеченые * #8
Сделай cin.get()
ВиталийZ
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 12
07.01.2009, 15:02  [ТС]     Почему не выполняется один из операторов ввода,помеченые * #9
Использование cin.get() не выход из положения. Как же всетаки правильно организовать ввод строки без пропуска операторов ввода даже если пользователь введет больше символов, чем это предусмотрено форматом ввода?

Уважаемые! Так кто-нибудь знает как правильно записать операторы ввода? Или точнее как удалить из буфера ввода лишние символы, чтобы они потом не мешали при последующем вводе. Повторю cin.clear() не помогает.
XaosLord
3 / 3 / 1
Регистрация: 18.03.2009
Сообщений: 20
07.04.2009, 14:05     Почему не выполняется один из операторов ввода,помеченые * #10
После считывания строки дописать:

C++
1
2
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n'); //сбрасываем весь хлам пока не кончится поток или не встретится символ перехода на новую строку.
подключить <limits>
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.04.2009, 14:15     Почему не выполняется один из операторов ввода,помеченые * #11
cin.ignore(); у меня работает на 100%
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2009, 11:12     Почему не выполняется один из операторов ввода,помеченые *
Еще ссылки по теме:

C++ Перегрузка операторов присваивания, ввода, вывода
Перегрузка операторов потокового ввода-вывода C++
C++ Перегрузка операторов ввода\вывода
C++ Перегрузка операторов ввода. Segmentation fault
Перегрузка операторов потокового ввода вывода C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ВиталийZ
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 12
03.05.2009, 11:12  [ТС]     Почему не выполняется один из операторов ввода,помеченые * #12
Спасибо за профессиональную подсказку
Yandex
Объявления
03.05.2009, 11:12     Почему не выполняется один из операторов ввода,помеченые *
Ответ Создать тему
Опции темы

Текущее время: 09:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru