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

Ввод значений в строку - C++

Восстановить пароль Регистрация
 
Romanpokemon
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 30
02.03.2013, 18:12     Ввод значений в строку #1
Суть:
Выводится список групп в консоль, затем выбираем группу, затем выводится список людей, затем человека выбираем.
Проблема:
Если ввести любое другое сочетание символов при выборе группы (например: 2132141324), то меню перезапускается, всё ок, дальше вводим нормальное значение для группы, потом появляется список людей, тоже выбираем человека, но затем снова появляется надпись "выбери человека" и дальше консоль вылетает с ошибкой.
В чем может крыться проблема?


Кликните здесь для просмотра всего текста
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
40
41
42
43
44
45
46
47
48
49
void Group::menu()
{
    string flag;
 
    string spisok_grupp[3] = {"Группы"};
    for(int j=0; j<3; j++)
        cout << j+1 << ". " << spisok_grupp[j] << endl;
 
    cout << "\n\nВыбери группу ";
    cin >> flag;
    cout << endl;
 
    if (flag == "1")
    {
        string spisok_dki[10] = {"Люди"};
        for(int i=0;i<10;i++)
            cout << i+1 << ". " << spisok_dki[i]  << endl;
    }
    else
    {
        if (flag == "2")
        {
            string spisok_dkt[5] = {"Люди"};
            for(int i=0;i<5;i++)
                cout << i+1 << ". " << spisok_dkt[i] << endl;
        }
        else
        {
            if (flag == "3")
            {
                string spisok_dke[5] = {"Люди"};
                for(int i=0;i<5;i++)
                    cout << i+1 << ". " << spisok_dke[i] << endl;
            }
            else
            {
                flag.clear();
                system("cls");
                menu();
            }
        }
    }
 
    string a;
    cout << "\n\nВыбери человека из списка ";
    cin >> a;
 
    cout << endl;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
02.03.2013, 22:37     Ввод значений в строку #2
Хотелось бы текст самой ошибки посмотреть, а там видно будет.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.03.2013, 22:53     Ввод значений в строку #3
C++
1
2
3
4
5
...
string a;
cout << "\n\nВыбери человека из списка ";
cin >> a;
...
И как эта а потом используется?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
03.03.2013, 18:30     Ввод значений в строку #4
Что то я не пойму в чем ошибка.
А текст самой ошибки, на что ругается?
Из того что ты привел
все правильно вроде, выполнились все условия и в конце метода вывелось сообщение
cout << "\n\nВыбери человека из списка ";
и предложен ввод.
У меня еще вопрос по ходу, а что происходит с 'а' дальше.
Romanpokemon
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 30
05.03.2013, 18:39  [ТС]     Ввод значений в строку #5
Цитата Сообщение от egor2116 Посмотреть сообщение
Что то я не пойму в чем ошибка.
А текст самой ошибки, на что ругается?
Из того что ты привел
все правильно вроде, выполнились все условия и в конце метода вывелось сообщение и предложен ввод.
У меня еще вопрос по ходу, а что происходит с 'а' дальше.
с "а" ничего не происходит, в том то и дело.
даже, если даже ставить a.clear() , то всё равно прога прекращает работать на втором кругу

Добавлено через 54 минуты
Цитата Сообщение от egor2116 Посмотреть сообщение
Что то я не пойму в чем ошибка.
А текст самой ошибки, на что ругается?
Из того что ты привел
все правильно вроде, выполнились все условия и в конце метода вывелось сообщение и предложен ввод.
У меня еще вопрос по ходу, а что происходит с 'а' дальше.
"Необработанное исключение по адресу 0x5EDD4F98 (msvcr110d.dll) в Писюны.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCC0."
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.03.2013, 19:00     Ввод значений в строку #6
1. Закоментируй
C++
1
2
3
4
5
 string a;
    cout << "\n\nВыбери человека из списка ";
    cin >> a;
 
    cout << endl;
Из преведенного тобой кода эти строки бессмыслены.
2.Проверь в заголовочном файле твоего класса точно подключен
C++
1
#include <string>
и этот заголовочный файл точно подключен к "срр" файлу.( мало ли )
3.Обычно при возникновении ошибок оно указывает строку в которой она произошла напиши ее, а лучше скопируй все что писалось при выполнении этой программы в окне debug'а
Romanpokemon
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 30
05.03.2013, 19:12  [ТС]     Ввод значений в строку #7
Цитата Сообщение от egor2116 Посмотреть сообщение
1. Закоментируй
C++
1
2
3
4
5
 string a;
    cout << "\n\nВыбери человека из списка ";
    cin >> a;
 
    cout << endl;
Из преведенного тобой кода эти строки бессмыслены.
2.Проверь в заголовочном файле твоего класса точно подключен
C++
1
#include <string>
и этот заголовочный файл точно подключен к "срр" файлу.( мало ли )
3.Обычно при возникновении ошибок оно указывает строку в которой она произошла напиши ее, а лучше скопируй все что писалось при выполнении этой программы в окне debug'а
string подлючен, хедер тоже
всё равно ошибка, если закомментить... просто нужен выбор человека, а дальше идет генерация случайных чисел, а выбор сам нужен для красоты...
я бы скинул всю прогу, но мне малость стыдно это делать))
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.03.2013, 23:05     Ввод значений в строку #8
Цитата Сообщение от egor2116 Посмотреть сообщение
3.Обычно при возникновении ошибок оно указывает строку в которой она произошла
Это ошибка не при компиляции, а при выполнении, поэтому не будет указания на строкиу. Вылет может быть и в другом месте, а не в этом куске кода. Поэтому лучше выложить весь код.

Добавлено через 4 минуты
Вот такой код не вылетает. Значит причина, где-то в другом месте.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <string>
using namespace std;
 
void /*Group::*/menu()
{
    setlocale(0, "");
    
    string flag;
 
    string spisok_grupp[3] = {"Группы"};
    for(int j = 0; j < 3; j++)
        cout << j + 1 << ". " << spisok_grupp[j] << endl;
 
    cout << "\n\nВыбери группу ";
    cin >> flag;
    cout << endl;
 
    if (flag == "1")
    {
        string spisok_dki[10] = {"Люди"};
        for(int i = 0; i < 10; i++)
            cout << i + 1 << ". " << spisok_dki[i]  << endl;
    }
    else
    {
        if (flag == "2")
        {
            string spisok_dkt[5] = {"Люди"};
            for(int i = 0; i < 5; i++)
                cout << i + 1 << ". " << spisok_dkt[i] << endl;
        }
        else
        {
            if (flag == "3")
            {
                string spisok_dke[5] = {"Люди"};
                for(int i  =0; i < 5; i++)
                    cout << i + 1 << ". " << spisok_dke[i] << endl;
            }
            else
            {
                flag.clear();
                system("cls");
                menu();
            }
        }
    }
 
    string a;
    cout << "\n\nВыбери человека из списка ";
    cin >> a;
 
    cout << endl;
}
 
int main()
{
    menu();
    
    system("pause");
    return 0;
}
Romanpokemon
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 30
05.03.2013, 23:06  [ТС]     Ввод значений в строку #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Это ошибка не при компиляции, а при выполнении, поэтому не будет указания на строкиу. Вылет может быть и в другом месте, а не в этом куске кода. Поэтому лучше выложить весь код.
пожалуйста, не принимать близко к сердцу назначение программы просто порой на лекциях нечего делать
Proga.zip
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.03.2013, 00:22     Ввод значений в строку #10
.....
Вложения
Тип файла: rar Proga2.rar (2.1 Кб, 2 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2013, 00:45     Ввод значений в строку
Еще ссылки по теме:

Std:cin ввод нескольких значений C++
C++ Одномерный массив. Ввод значений с клавиатуры
C++ Ввод математического уравнения в строку

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

Или воспользуйтесь поиском по форуму:
Romanpokemon
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 30
06.03.2013, 00:45  [ТС]     Ввод значений в строку #11
Цитата Сообщение от alsav22 Посмотреть сообщение
.....
ошибку свою понял, спасибо. еще раз пардон за содержимое
Yandex
Объявления
06.03.2013, 00:45     Ввод значений в строку
Ответ Создать тему
Опции темы

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