Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 467
1

Выяснить почему после ввода первого элемента массива цикл не работает (std::cin в цикле for)

06.08.2016, 21:23. Просмотров 320. Ответов 6
Метки нет (Все метки)

Добрый день!
Взялся за простой пример из книги Лафоре.
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
#include <iostream>
#include <iomanip>
using namespace std;
const int DISTRICTS = 4;
const int MONTHS = 3;
int main()
{
    int d, m;
    double sales[DISTRICTS][MONTHS];
    cout << endl;
    for(d = 0; d < DISTRICTS; d++)
        for(m = 0; m < MONTHS; m++)
        {
            cout <<"Enter sales for district " << d + 1;
            cout << ", month "  << m + 1 << ": ";
            cin >> sales[d][m];
        }
    cout << "\n\n";
    cout << " Month\n";
    cout << " 1 2 3";
    for(d = 0; d < DISTRICTS; d++)
    {
        cout << "\nDistrict " << d + 1;
        for(m = 0; m < MONTHS; m++)
            cout << setiosflags(ios::fixed)
                 << setiosflags(ios::showpoint)
                 << setprecision(2)
                 << setw(10)
                 << sales[d][m];
    }
    cout << endl;
    system("pause");
    return 0;
}
Программа перестаёт работать уже на стадии cin >> sales[d][m];. После ввода первого элемента массива цикл не работает.
Как, вообще, можно создать цикл, в котором cin будет работать столько , сколько заложено в цикле?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2016, 21:23
Ответы с готовыми решениями:

Почему не работает цикл while в цикле for
подскажите, почему не срабатывает вывод если while находится в for ? ...

Объяснить поведение объекта std::cin в цикле while
#include&lt;iostream&gt; #include&lt;string&gt; #include&lt;cstdlib&gt; #include&lt;windows.h&gt;...

Не работает std::cout || std::cin
#include &quot;Account.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; using...

Исправить ошибку, при которой не работает cin после vector'a (лишний символ '\n' в потоке ввода)
Столкнулся с этой проблемой в другой программе,но решил написать более...

После ввода первого элемента программа вылетает
Добрый день. Я студент, пытаюсь сделать лабораторную работу. #include...

6
lawr
372 / 266 / 478
Регистрация: 09.05.2014
Сообщений: 769
06.08.2016, 21:31 2
Fatmarmelad, что значит "цикл не работает"? в чем это проявляется? у меня например все очень даже работает в VS2013
0
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 467
06.08.2016, 21:44  [ТС] 3
Могу ввести значение только для Enter sales for district 1, month 1:. Далее появляются сразу все остальные
Enter sales for district d, month m: без возможности ввести что-то.
Пробовал просто скопировать этот пример из книги вставил (у меня тоже VS 2013) - цикл не работает.
0
lawr
372 / 266 / 478
Регистрация: 09.05.2014
Сообщений: 769
06.08.2016, 21:58 4
Fatmarmelad, попробую угадать. вы десятичные знаения вводите в формате с запятой или с точкой? ну в смысле 1,25 или 1.25 например?
0
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 467
06.08.2016, 22:06  [ТС] 5
lawr, Попробуйте, пожалуйста. вводить значения с десятичной дробью (массив типа double). У меня со значениями int тоже получается. А вот с элементами с плавающей точкой не работает.
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
06.08.2016, 22:32 6
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
lawr, Попробуйте, пожалуйста. вводить значения с десятичной дробью (массив типа double). У меня со значениями int тоже получается. А вот с элементами с плавающей точкой не работает.
C++
1
2
3
4
5
6
while(!(cin >> sales[d][m]))
{
    cin.clear();
    cin.ignore(100500,'\n');
    cout<<"Моя твоя не понимать"<<endl;
}
И поиграйтесь с форматом ввода (12.34 через точку, 12,34 через запятую, etc).
0
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 467
06.08.2016, 22:48  [ТС] 7
Renji, спасибо! Если через точку-действительно получается.
0
06.08.2016, 22:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2016, 22:48

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил...

Как узнать, что есть данные для ввода, которые можно забрать std::cin
Всем здравствуйте! У меня есть параллельный поток, в котором нужно собирать...

Найти номер минимального по модулю элемента массива и сумму модулей после первого отрицательного элемента
1.В одномерном массиве, состоящем из n вещественных элементов, вычислить:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru