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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 262
#1

очень странная ошибка с++ - C++

04.07.2013, 16:45. Просмотров 496. Ответов 15
Метки нет (Все метки)

уважаемые администраторы, я пытался это добавить в раздел для экспертов, но меня недостаточно прав(
вот ссылка на видио где я показываю очень странную проблему, я и ещё 2 программиста головою об стенку бились, но так и не поняли из-за чего она http://www.youtube.com/watch?v=dCZkKNCg4js
так же код http://pastebin.com/Q05FY5Xb
 Комментарий модератора 
Сломал все глаза.
Очень странное задание.
В следующий раз потрудитесь переписать задание на форум. А видеозапись можно использовать как дополнительный вспомогательный материал.


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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
using namespace std;
 
int main();
int age[] = {17,24};
string name[] = {"roma","dima"};
 
//***************************************************************************************
    
void baza()
{
        do
        {
            
            cout << "vvedite id: ";
            int id;
            cin >> id;
            
            if(id > 0 && id < 3)
            {
                cout << endl << "age: " << age[id-1] << endl << "name: " << name[id-1] << endl;
            }
            
            if(id < 1 || id > 2)
            {
                cout << "error" << endl;
            }
            do
            {
                cout << endl << "hotite prodolzit?: ";
                string vopros;
                cin >> vopros;
                
                if(vopros == "net")
                {
                    cout << endl;
                    main();
                }
                if(vopros != "da")
                {
                    cout << endl << "error(!=(da,net))" << endl;
                }
                if(vopros == "da")
                {
                    cout << endl;
                    baza();
                }
            }
            while(true);
        }
        while(true);
}
 
//********************************************************************************
 
void function()
{
            cout << "dopolnitelnie funkchii" << endl
            << "1 - naiti samogo starshego" << endl
            << "2 - naiti srednij vozrast" << endl
            << "3 - redaktor" << endl << endl
            << "vvedite punct: ";
            
            int punct;
            cin >> punct;
            
            if(punct < 1 || punct > 3)
            {
                cout << "error" << endl;
            }
            
            if(punct == 1)
            {
                int a = 0;
                int b = 0;
                for(int i = 0 ; i < 2 ; i++)
                {
                    if(a < age[i])
                    {
                        a = age[i];
                        b = i;
                    }
                }
                cout << endl << "age: " << age[b] << endl << "name: " << name[b] << endl << endl;
                main();
            }
            if(punct == 2)
            {
                    int resultat = 0;
                    for(int i = 0 ; i < 2 ; i++)
                    {
                        resultat += age[i];
                    }
                    resultat /= 2;
                    cout << endl << "srednij vozrast: "<< resultat << endl << endl;
                    main();
            }
}
 
//********************************************************************************
 
int main()
{
    {
        cout << "punct list" << endl
        << "1 - baza dannix" << endl
        << "2 - dopolnitelnie funkchii" << endl
        << "3 - exit" << endl << endl
        << "vvedite punct: ";
        
        int punct;
        cin >> punct;
        
        cout << endl;
        
        if(punct < 1 || punct > 3)
        {
            cout << "error" << endl;
        }
        if(punct == 2)
        {
            function();
        }   
        if(punct == 1)
        {
            baza();
        }
        if(punct == 3)
        {
            return false;
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
Нарушитель
2321 / 1947 / 192
Регистрация: 03.07.2012
Сообщений: 6,970
Записей в блоге: 1
04.07.2013, 16:55     очень странная ошибка с++ #2
У меня: видео мутное, ничего не разобрать. Звука нет...
Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 17:07     очень странная ошибка с++ #3
Замените все if'ы на switch, ради бога.
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 262
04.07.2013, 17:08  [ТС]     очень странная ошибка с++ #4
Цитата Сообщение от zer0mail Посмотреть сообщение
У меня: видео мутное, ничего не разобрать. Звука нет...
звука и вправдо нету а насчёт мутности ты чё в ютюбе никогда не был там на значке шестерёнки качество можно улучшать
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
04.07.2013, 17:09     очень странная ошибка с++ #5
А может не нужно всё-таки main вызывать из всех функций программы? Это во-первых. А во-вторых, когда у Вас получается выход из "вызванной" main, Вы возвращаетесь в место вызова, а там как раз весь сыр бор и никаким выходом из программы не пахнет
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 262
04.07.2013, 17:10  [ТС]     очень странная ошибка с++ #6
Цитата Сообщение от Croessmah Посмотреть сообщение
А может не нужно всё-таки main вызывать из всех функций программы?
зачем я вызываю main только для того чтобы сделать цикл из функций
Vovabo4
19 / 19 / 2
Регистрация: 05.06.2013
Сообщений: 186
04.07.2013, 17:11     очень странная ошибка с++ #7
Хрен поймёшь в чём проблема.
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
04.07.2013, 17:11     очень странная ошибка с++ #8
svk2140,
дело в том, что когда вы находясь в функции baza() отвечаете "net" на вопрос "Продолжить выполнение?", то вызывается функция main()
Потом в этой функции вы отвечаете 3 (то есть Выход), функция завершается и программа продолжает выполнение на точке, откуда была вызвана функция то есть:
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
            if(vopros == "net") //вы ответили "net" и условие выполнилось
 
            {
 
                cout << endl;
 
                main(); //запустили функцию
//вы ответили "3" и main завершилась
//функция baza продолжает свое выполнение здесь
            }
 
            if(vopros != "da") // "da" != "net", поэтому условие выполняется. а дальше видите сами
 
            {
 
                cout << endl << "error(!=(da,net))" << endl;
 
            }
 
            if(vopros == "da")
 
            {
 
                cout << endl;
 
                baza();
 
            }
Не стоит забывать, что ОС запускает main() при запуске exe
Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 17:12     очень странная ошибка с++ #9
Цитата Сообщение от Croessmah Посмотреть сообщение
А может не нужно всё-таки main вызывать из всех функций программы?
вот вот.
везде где вызываете
C++
1
main();
замените на
C++
1
return;
и
C++
1
int main();
в самом начале не нужен.
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
04.07.2013, 17:12     очень странная ошибка с++ #10
Цитата Сообщение от svk2140 Посмотреть сообщение
зачем я вызываю main только для того чтобы сделать цикл из функций
можно же сделать нормальный цикл, а не по китайски
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 262
04.07.2013, 17:12  [ТС]     очень странная ошибка с++ #11
Olivеr, ты лучше мне решение предложи
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 262
04.07.2013, 17:17  [ТС]     очень странная ошибка с++ #12
Denisqwwq, нет нужен не знаю почему вить main запускается самой первой но без инициализации в начале выдаёт ошибку
Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
04.07.2013, 17:25     очень странная ошибка с++ #13
svk2140, если вам так принципиально то
C++
1
2
3
4
if(punct == 3)
 {
    return false;
  }
замените на
C++
1
2
3
4
if(punct == 3)
 {
    exit(0);
  }
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 262
04.07.2013, 17:28  [ТС]     очень странная ошибка с++ #14
Denisqwwq, а библиотека походу нестандартная
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
04.07.2013, 17:32     очень странная ошибка с++ #15
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
 
using namespace std;
 
int age[] = {17,24};
 
string name[] = {"roma","dima"};
 
void baza()
{
    int id;
    string vopros;
    do {
        cout << "vvedite id: ";
        cin >> id;
 
        if(id > 0 && id < 3)
            cout << endl << "age: " << age[id-1] << endl << "name: " << name[id-1] << endl;
        else
            cout << "error" << endl;
 
        do {
            cout << endl << "hotite prodolzit?: ";
            cin >> vopros;
 
            if(vopros == "net")
                return;
            if (vopros == "da")
                break;
            else
                cout << endl << "error(!=(da,net))" << endl;
 
        } while(true);
    } while(true);
}
 
void function()
{
    cout << "dopolnitelnie funkchii" << endl
         << "1 - naiti samogo starshego" << endl
         << "2 - naiti srednij vozrast" << endl
         << "3 - redaktor" << endl << endl
         << "vvedite punct: ";
 
    int punct, a, b, resultat;
    cin >> punct;
 
    switch (punct) {
    case 1:
        a = b = 0;
        for(int i = 0 ; i < 2 ; i++)
            if(a < age[i]) {
                a = age[i];
                b = i;
            }
 
        cout << endl << "age: " << age[b] << endl << "name: " << name[b] << endl << endl;
        break;
    case 2:
        resultat = 0;
        for(int i = 0 ; i < 2 ; i++)
            resultat += age[i];
        resultat /= 2;
        cout << endl << "srednij vozrast: "<< resultat << endl << endl;
        break;
    case 3:
        break;
    default:
        cout << "error\n";
    }
 
}
 
 
int main()
 
{
    int punct;
    do {
        cout << "punct list" << endl
 
             << "1 - baza dannix" << endl
 
             << "2 - dopolnitelnie funkchii" << endl
 
             << "3 - exit" << endl << endl
 
             << "vvedite punct: ";
 
        cin >> punct;
 
        switch (punct) {
        case 1:
            baza();
            break;
        case 2:
            function();
            break;
        case 3:
            break;
        default:
            cout << "error" << endl;
        }
    } while (punct != 3);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 17:35     очень странная ошибка с++
Еще ссылки по теме:

C++ Странная ошибка в коде
Странная ошибка (в дебаггере не выявляется) C++
C++ Странная ошибка (зависимость от cout)
Странная ошибка с decltype [GCC 4.9.2] C++
Странная ошибка с else C++

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

Или воспользуйтесь поиском по форуму:
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 262
04.07.2013, 17:35  [ТС]     очень странная ошибка с++ #16
всё люди всем спасибо я решил проблему благодаря пояснению oliver
Yandex
Объявления
04.07.2013, 17:35     очень странная ошибка с++
Ответ Создать тему
Опции темы

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