С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
4 / 3 / 1
Регистрация: 30.01.2020
Сообщений: 51
1

Проблема при вводе данных

06.05.2020, 11:02. Показов 1735. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет. Я начинающий в изучении C++, да и в программировании.
у меня возникла проблема в программе. у меня есть int переменная, которую нужно ввести в консоли и если ее значение 1, то выполниться одно действие, а если 2, то выполниться второе действие. все в принципе работает, но, если я введу букву, то просто все зацикливается. Прошелся отладчиком и если я ввожу букву или любой другой символ кроме цифр, то вместо того чтобы повторить попытку ввода, у меня программа игнорирует cin и просто с помощью goto зацикливает сама себя...
надеюсь понятно объяснил, ниже тот самый кусочек кода.

C++
1
2
3
4
5
6
7
8
9
10
11
12
LANGUAGE:
    cout << "\t\t\t\tВыберите язык" << endl << endl;
    cout << "\t\t1 - English" << "\t\t\t 2 - Русский" << endl;
    cout << "Ввод: ";
    cin >> language.language;
    if (language.language != 1)
    {
        if (language.language != 2)
        {
            goto LANGUAGE;
        }
    }
language.language - это та самая int переменная, пришлось ее в класс засунуть по некоторым причинам.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2020, 11:02
Ответы с готовыми решениями:

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt;...

Ошибка при вводе данных
Перескакивает через ввод поля &quot;Name&quot;. Заранее благодарен void add(){ char S1; char S2; ...

Обработка данных при вводе
При решении данной задачи обязательным условием является обработка входных данных сразу после их...

Проверка типа данных при вводе
Задача: реализовать проверку на то, что пользователь ввёл целое число. Нашёл это: //Зачем...

6
1710 / 1110 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
06.05.2020, 11:08 2
Лучший ответ Сообщение было отмечено Aapnoot как решение

Решение

C++
1
2
3
4
5
6
7
    char x;
 
    do
    {
        std::cout << "input 1/2 :";
        std::cin >> x;
    } while (x < '1' || x >'2');
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.05.2020, 11:26 3
Лучший ответ Сообщение было отмечено Aapnoot как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main() 
{
    cout << "a=";
    int a;
    while (!(cin >> a) || (cin.peek() != '\n'))
    {
        cin.clear();
        while (cin.get() != '\n');
        cout << "Input error! Retry input  \na=";
        
    }
    if (a==1) cout << "ONE\n";
    else if (a==2) cout << "TWO\n";
    else cout << "another number\n";
system("pause");
return 0;
}
1
4 / 3 / 1
Регистрация: 30.01.2020
Сообщений: 51
06.05.2020, 11:26  [ТС] 4
Да это все в принципе работает, но, если мы введем 2 символа, то cout выведется 2 раза, если 3 символа напишем, то 3 раза и т.д
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.05.2020, 11:43 5
Aapnoot, если ввели неправильно, просит повторить до тех пор пока не введёте правильно. разве это не логично ?

кстати Вам обязательно переменная типа int ? тип char не устроит ?
0
4 / 3 / 1
Регистрация: 30.01.2020
Сообщений: 51
06.05.2020, 12:19  [ТС] 6
Да в принципе без разницы, можно и char.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.05.2020, 12:31 7
Цитата Сообщение от Aapnoot Посмотреть сообщение
без разницы
тогда используйте вариант Folian
1
06.05.2020, 12:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2020, 12:31
Помогаю со студенческими работами здесь

Программа крашится при вводе данных
Вот этот код скопирован из учебника. На моем компьютере почему то запускается программа но при...

Несоответствие типов при вводе данных
День добрый, возникла проблема. Хотел поставить условие, на рамки входных данных, но не смог,...

Ошибка при вводе строковых данных
Программа перестаёт забирать данные после второго прогона цикла. Но после удаления строчек для...

Ошибка при вводе данных и в функциях
Некорректно происходят вычисления x1 и x2. Так же при вводе в переменную a,b или c начинается...

Организация вычислений при вводе данных.
Написать программу которая генерирует три последовательности из 10 случайных чисел, выводит их на...

Почему при вводе данных вылетает ошибка
вот написал программу #include &lt;iostream&gt; using namespace std; #define N 2 struct Spis { char...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru