Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208

Матрицы. Бесконечный цикл. Проверка ввода

31.07.2012, 20:23. Показов 2930. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В конструкторе класса матриц пользователю предлагается выбрать ввода с клавиатуры или автоматически. При выборе ручного ввода возникает цикл непонятного характера.

Вот фото консоли во вложении.

Вот конструктор:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Matrix::Matrix(int s, char type){
    int i,j;
    char ch;
    
    if(s > 20) size = 20;
    else if(s < 1) size = 1;
    else size = s;
 
    mtx = new double*[size];
    for(i=0; i<size; i++)
        mtx[i] = new double[size];
 
    switch(type){
        case '0':
        case '1':
            for(i=0; i<size; i++)
                for(j=0; j<size; j++)
                    mtx[i][j] = (i == j)? type - 48:0;
            break;
        case 'r':
            srand(time(NULL));
 
            for(i=0; i<size; i++)
                for(j=0; j<size; j++)
                    mtx[i][j] = rand() % 10;
            break;
        case 'm':
            for(i=0; i<size; i++)
                for(j=0; j<size; j++){
                    do{
                        fflush(stdin);
                        cout << "Введите mtx [" << i << "][" << j << "]: ";  
                        cin >> mtx[i][j];
                    }while(cin.rdbuf()->in_avail()!=1);
                }
            cout << "\n";
            break;
    }
}
Вложения
Тип файла: rar foto.rar (11.9 Кб, 16 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2012, 20:23
Ответы с готовыми решениями:

Бесконечный цикл при попытке ввода символа вместо числа
При вводе буквы или символы вместо цифры,программа начинает бесконечно выводить последний записанный для выхода текст.Как это можно...

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

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

8
 Аватар для DaskOFF
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
31.07.2012, 20:31
к чему фото архивировать?
0
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
31.07.2012, 20:36  [ТС]
Фото сделано кнопкой prt sc и вставлено в paint. Файлы bmp не грузятся.
0
 Аватар для DaskOFF
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
31.07.2012, 20:38
в пейнте можно сохранять jpeg
0
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
31.07.2012, 20:49  [ТС]
Ну вот смотрите
Миниатюры
Матрицы. Бесконечный цикл. Проверка ввода  
0
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
31.07.2012, 21:28  [ТС]
Есть у кого - нибудь предположения о причине зацикливания?
0
11 / 11 / 2
Регистрация: 15.01.2012
Сообщений: 104
02.08.2012, 01:16
Цитата Сообщение от bgm313 Посмотреть сообщение
C++
1
                while(cin.rdbuf()->in_avail()!=1);
не используйте это
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.08.2012, 04:05
delete
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.08.2012, 04:21
Если я правильно понял, зависание у вас возникает при ошибке ввода через cin >>. Матрица у вас под double, вводите qwe23. На первом же символе cin >> выдаст ошибку.
Введите обработку ошибки. Например, так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for(int i=0; i < size; i++)
            for(int j = 0; j < size; j++)
            {
                do{
                        fflush(stdin);
                        cout << "Введите mtx [" << i << "][" << j << "]: "; 
                        cin >> mtx[i][j];
                        if (cin.fail())
                        {
                            cin.clear();
                            while (cin.get() != '\n') continue;
                            cout << "Неверный ввод! Повторите." << endl;
                            continue;
                        }
                    } while(cin.rdbuf() -> in_avail() != 1);
             }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.08.2012, 04:21
Помогаю со студенческими работами здесь

Матрицы. Классы. Проверка ввода
Все привет. Нужно реализовать класс матриц. Почти всё сделал. Но не могу понять, что у меня за ошибка при проверке ввода? Вот вывод и...

Цикл white. Проверка ввода данных
Здравствуйте, подскажите, пожалуйста, как создать цикл: Задача такова, что нужно сканировать, что ввел пользователь. Если это не две...

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор?
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...

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

Проверка корректности ввода строк матрицы
Матрица А(m,n) вводится построчно; Строки поступают в произвольном порядке: указывается номер строки и значение ее элементов. Необходимо...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru