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

Прогнать цикл в main до конца - C++

Восстановить пароль Регистрация
 
Merf1n
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 15
30.11.2013, 16:37     Прогнать цикл в main до конца #1
Программа не может прогнать цикл, в main, до конца. Помогите салаге разобраться
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
#include <iostream>
#include <math.h>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
int ProcessInput()// Обработка ввода пользователя
{bool vv=false;
  int   x;
  
  setlocale( LC_ALL, "Russian" );
  while (!vv)
  {
    cout<<"Введите число вопросов от 5 до 10"<<endl; cin>>x;
    if (x<5 || x>10) cout<<"Вводи заново, ведь сказано от 5 до 10"<<endl;
     if (x>=5 && x<=10)
         vv=true;
  }
 return x;
}
int ProcessOtv()//Обработка ответа пользователя
{
    bool cc=false;
    int j;
    setlocale( LC_ALL, "Russian" );
    while (!cc)
    {
        cout<<"Введи ответ"<<endl;
        cin>>j;
        if(j<1 || j>3) cout<<"Вводи заново"<<endl;
        if(j>=1 && j<=3) cc=true;
    }
    return j;
}
int random ()
{
    int v;
    v=rand()%10+1;
    srand(time(NULL));
    return v;
}
int main ()
{
    
    int i=1,j,v,x,pr=0,np=0;
x=ProcessInput();
    setlocale( LC_ALL, "Russian" );
    
        char* vopotv [11] [10]; 
    vopotv [1] [1] = "Вопрос 1";
    vopotv [1] [2] = "Вопрос 2";
    vopotv [1] [3] = "Вопрос 3";
    vopotv [1] [4] = "Вопрос 4";
    vopotv [1] [5] = "Вопрос 5";
    vopotv [1] [6] = "Вопрос 6";
    vopotv [1] [7] = "Вопрос 7";
    vopotv [1] [8] = "Вопрос 8";
    vopotv [1] [9] = "Вопрос 9";
    vopotv [1] [10] = "Вопрос 10";
    vopotv [2] [1] = "Ответ 1";
    vopotv [2] [2] = "Ответ 2";
    vopotv [2] [3] = "Ответ 3";
    vopotv [3] [1] = "Ответ 1";
    vopotv [3] [2] = "Ответ 2";
    vopotv [3] [3] = "Ответ 3";
    vopotv [4] [1] = "Ответ 1";
    vopotv [4] [2] = "Ответ 2";
    vopotv [4] [3] = "Ответ 3";
    vopotv [5] [1] = "Ответ 1";
    vopotv [5] [2] = "Ответ 2";
    vopotv [5] [3] = "Ответ 3";
    vopotv [6] [1] = "Ответ 1";
    vopotv [6] [2] = "Ответ 2";
    vopotv [6] [3] = "Ответ 3";
    vopotv [7] [1] = "Ответ 1";
    vopotv [7] [2] = "Ответ 2";
    vopotv [7] [3] = "Ответ 3";
    vopotv [8] [1] = "Ответ 1";
    vopotv [8] [2] = "Ответ 2";
    vopotv [8] [3] = "Ответ 3";
    vopotv [9] [1] = "Ответ 1";
    vopotv [9] [2] = "Ответ 2";
    vopotv [9] [3] = "Ответ 3";
    vopotv [10] [1] = "Ответ 1";
    vopotv [10] [2] = "Ответ 2";
    vopotv [10] [3] = "Ответ 3";
    
    while (!(i==x))
    {i=i+1;
    v=random();
    cout<<vopotv[1][v]<<endl;
    cout<<"1"<<' '<<vopotv[v][1]<<endl;
    cout<<"2"<<' '<<vopotv[v][2]<<endl;
    cout<<"3"<<' '<<vopotv[v][3]<<endl;
    j=ProcessOtv();
    if (v==1 && j==2) pr++;
    else np++;
    if (v==2 && j==1) pr++;
    else np++;
    if (v==3 && j==1) pr++;
    else np++;
    if (v==4 && j==3) pr++;
    else np++;
    if (v==5 && j==3) pr++;
    else np++;
    if (v==6 && j==1) pr++;
    else np++;
    if (v==7 && j==1) pr++;
    else np++;
    if (v==8 && j==2) pr++;
    else np++;
    if (v==9 && j==1) pr++;
    else np++;
    if (v==10 && j==3) pr++; 
        else np++;
    return i;
    }
    cout<<"Правильных"<<' '<<pr<<endl;
    cout<<"Неправильных"<<' '<<np<<endl;
    cout<<"Спасибо"<<endl;
return 0;   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
30.11.2013, 16:46     Прогнать цикл в main до конца #2
Ну если кто и решит разбираться в вашем коде, то только единицы(из-за той "красоты", что вы выложили выше). Привел код к нормальному виду(пока без исправлений):
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
134
135
136
#include <iostream>
#include <math.h>
#include <cstdlib>
#include <ctime>
#include <conio.h>
 
using namespace std;
 
int ProcessInput()// Обработка ввода пользователя
{
    bool vv = false;
    int x;
 
    setlocale( LC_ALL, "Russian" );
 
    while (!vv)
    {
        cout<<"Введите число вопросов от 5 до 10"<<endl; 
        cin>>x;
        if (x<5 || x>10) cout<<"Вводи заново, ведь сказано от 5 до 10"<<endl;
        if (x>=5 && x<=10)
        vv=true;
    }
    
    return x;
}
 
int ProcessOtv()//Обработка ответа пользователя
{
    bool cc=false;
    int j;
    setlocale( LC_ALL, "Russian" );
 
    while (!cc)
    {
        cout<<"Введи ответ"<<endl;
        cin>>j;
 
        if(j<1 || j>3) cout<<"Вводи заново"<<endl;
        if(j>=1 && j<=3) cc=true;
    }
    return j;
}
 
int random ()
{
    int v;
 
    v = rand() % 10 + 1;
 
    srand(time(NULL));
    return v;
}
 
int main ()
{
 
    int i=1,j,v,x,pr=0,np=0;
    x = ProcessInput();
    setlocale( LC_ALL, "Russian" );
 
    char* vopotv [11] [10]; 
    vopotv [1] [1] = "Вопрос 1";
    vopotv [1] [2] = "Вопрос 2";
    vopotv [1] [3] = "Вопрос 3";
    vopotv [1] [4] = "Вопрос 4";
    vopotv [1] [5] = "Вопрос 5";
    vopotv [1] [6] = "Вопрос 6";
    vopotv [1] [7] = "Вопрос 7";
    vopotv [1] [8] = "Вопрос 8";
    vopotv [1] [9] = "Вопрос 9";
    vopotv [1] [10] = "Вопрос 10";
    vopotv [2] [1] = "Ответ 1";
    vopotv [2] [2] = "Ответ 2";
    vopotv [2] [3] = "Ответ 3";
    vopotv [3] [1] = "Ответ 1";
    vopotv [3] [2] = "Ответ 2";
    vopotv [3] [3] = "Ответ 3";
    vopotv [4] [1] = "Ответ 1";
    vopotv [4] [2] = "Ответ 2";
    vopotv [4] [3] = "Ответ 3";
    vopotv [5] [1] = "Ответ 1";
    vopotv [5] [2] = "Ответ 2";
    vopotv [5] [3] = "Ответ 3";
    vopotv [6] [1] = "Ответ 1";
    vopotv [6] [2] = "Ответ 2";
    vopotv [6] [3] = "Ответ 3";
    vopotv [7] [1] = "Ответ 1";
    vopotv [7] [2] = "Ответ 2";
    vopotv [7] [3] = "Ответ 3";
    vopotv [8] [1] = "Ответ 1";
    vopotv [8] [2] = "Ответ 2";
    vopotv [8] [3] = "Ответ 3";
    vopotv [9] [1] = "Ответ 1";
    vopotv [9] [2] = "Ответ 2";
    vopotv [9] [3] = "Ответ 3";
    vopotv [10] [1] = "Ответ 1";
    vopotv [10] [2] = "Ответ 2";
    vopotv [10] [3] = "Ответ 3";
 
    while (!(i == x))
    {
        i=i+1;
        v=random();
        cout<<vopotv[1][v]<<endl;
        cout<<"1"<<' '<<vopotv[v][1]<<endl;
        cout<<"2"<<' '<<vopotv[v][2]<<endl;
        cout<<"3"<<' '<<vopotv[v][3]<<endl;
        j=ProcessOtv();
        if (v==1 && j==2) pr++;
        else np++;
        if (v==2 && j==1) pr++;
        else np++;
        if (v==3 && j==1) pr++;
        else np++;
        if (v==4 && j==3) pr++;
        else np++;
        if (v==5 && j==3) pr++;
        else np++;
        if (v==6 && j==1) pr++;
        else np++;
        if (v==7 && j==1) pr++;
        else np++;
        if (v==8 && j==2) pr++;
        else np++;
        if (v==9 && j==1) pr++;
        else np++;
        if (v==10 && j==3) pr++; 
        else np++;
        return i;
    }
    cout<<"Правильных" <<' '<<pr<<endl;
    cout<<"Неправильных" <<' '<<np<<endl;
    cout<<"Спасибо" << endl;
    return 0;   
}
Merf1n
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 15
30.11.2013, 16:54  [ТС]     Прогнать цикл в main до конца #3
Забыл, спасибо
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
30.11.2013, 16:54     Прогнать цикл в main до конца #4
Merf1n, идет переполнение массива vopotv[11][10]. Вы присваиваете строку "Вопрос 10" несуществующему элементу, т.к. у вас 11 строк и 10 столбцов в массиве и нумерация строк идет от 0 и до 11 - 1, столбцов от 0 и до 10 - 1.
Merf1n
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 15
30.11.2013, 17:00  [ТС]     Прогнать цикл в main до конца #5
Цитата Сообщение от Ryuk Посмотреть сообщение
Merf1n, идет переполнение массива vopotv[11][10]. Вы присваиваете строку "Вопрос 10" несуществующему элементу, т.к. у вас 11 строк и 10 столбцов в массиве и нумерация строк идет от 0 и до 11 - 1, столбцов от 0 и до 10 - 1.
Спасибо. Вот где ошибка в цикле? Я уже перепробовал все, что знаю, а знания с++ у меня минимальные, к сожалению
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
30.11.2013, 17:08     Прогнать цикл в main до конца #6
Merf1n, ну про цикл я не знаю, просто ищу ошибки)
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
30.11.2013, 17:10     Прогнать цикл в main до конца #7
Через F10 прогони программу и узнай где ошибка
Ryuk
30.11.2013, 17:11
  #8

Не по теме:

не то

Merf1n
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 15
30.11.2013, 17:18  [ТС]     Прогнать цикл в main до конца #9
Ryuk, это всего лишь шаблон, когда пойму ошибку и доделаю программу их место займут реальные вопросы и ответы
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
30.11.2013, 17:20     Прогнать цикл в main до конца #10
Цитата Сообщение от Merf1n Посмотреть сообщение
Ryuk, это всего лишь шаблон, когда пойму ошибку и доделаю программу их место займут реальные вопросы и ответы
Ошибка в том, что в конце основного цикла у тебя стоит
C++
1
return i;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 17:24     Прогнать цикл в main до конца
Еще ссылки по теме:

Факториал. Использовать только одну функцию main и только один цикл C++
Какой новые синтаксис: int main() VS. void main() C++
Main.cpp In file included from main.cpp C++

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

Или воспользуйтесь поиском по форуму:
Merf1n
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 15
30.11.2013, 17:24  [ТС]     Прогнать цикл в main до конца #11
FAQEnD, Спасибо огромное Просто раньше он требовал return, не знаю почему.
Yandex
Объявления
30.11.2013, 17:24     Прогнать цикл в main до конца
Ответ Создать тему
Опции темы

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