0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 17
1

Подскажите, почему уходит в бесконечный цикл и как пофиксить

18.02.2018, 21:56. Показов 2523. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день!

Возникла трудность при вызове функции.
Функция должна принять int и отреагировать ошибкой на другие символы, но при вводе буквенного символа уходит в бесконечное зацикливание ошибки. Код на c++, но исходник был на си. Пришлось юзать сканф (хотя изначально был scanf_s). Т.к. не знаю, как заменить cinом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int getInt(int *a){
    int n;
    do
    {
        n = scanf("%d", a, sizeof(int));
        if (n < 0){
            return 0;
        }
        if (n == 0){
            cout << "Error! Repeat input" << endl;
        }
    }while (n == 0);
    return 1;
}
Подскажите, пожалуйста, как пофиксить.
Всем благодарен
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2018, 21:56
Ответы с готовыми решениями:

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Объяснить почему программа уходит в бесконечный цикл (связные списки)
Всем привет. Собрал связанный список, он работает, но при вводе типа char, программа уходит в...

Передача массивов в функцию: почему программа уходит в бесконечный цикл?
Всем здравствуйте, спасибо, что проявили к моей теме интерес. у меня вопрос и даже не один. для...

Объяснить почему при заполнении матрицы программа уходит в бесконечный цикл
#include &lt;iostream&gt; using namespace std; int main() { int mas; for (int i = 0; i &lt; 3;) {...

5
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
18.02.2018, 21:57 2
Ошибка в 42-й строке.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
18.02.2018, 22:01 3
Лучший ответ Сообщение было отмечено Anothereno как решение

Решение

Цитата Сообщение от Anothereno Посмотреть сообщение
Функция должна принять int и отреагировать ошибкой на другие символы
C++
1
2
3
4
5
6
7
8
// в строке ввода только целое число, перед которым могут быть пробельные символы, + или -.
int a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Input error! Retry input" << endl;
}
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
18.02.2018, 22:04 4
C++
1
 n = scanf("%d", a, sizeof(int));
пропустили амперсенд
C++
1
 n = scanf("%d", &a, sizeof(int));
а нет Вы там и так указатель передали. извеняюсь
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 17
18.02.2018, 22:16  [ТС] 5
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
// в строке ввода только целое число, перед которым могут быть пробельные символы, + или -.
int a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Input error! Retry input" << endl;
}
Спасибо большое! Все заработало)
0
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 106
04.10.2021, 21:12 6
Цитата Сообщение от Anothereno Посмотреть сообщение
Подскажите, пожалуйста, как пофиксить.
Что бы цикл не быль бесконечным, нужно добавить break в 11 строчку!
0
04.10.2021, 21:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2021, 21:12
Помогаю со студенческими работами здесь

Цикл do/while. Страница в браузере, уходит в бесконечный цикл и ничего не выводит.
Помогите, страница в браузере, как я понял, уходит в бесконечный цикл и ничего не выводит. Если...

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

Уходит в бесконечный цикл
int main() { setlocale(LC_ALL, &quot;rus&quot;); system(&quot;COLOR CE&quot;); system(&quot;cls&quot;); int n=99;...

Код уходит в бесконечный цикл
Добрый вечер, коллеги. Пытаюсь написать довольно простой генератор рандомного лабиринта, но код...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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