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

Ошибка проявляется только в середине, а не в начале программы - C++

Войти
Регистрация
Восстановить пароль
 
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
10.12.2012, 20:49     Ошибка проявляется только в середине, а не в начале программы #1
здравствуйте, в программе у меня ошибка, но она почему то обозначается только в строках
case 'octybr': и в строчке case'sentybr':

собственно сама ошибка:
duplicate case value - в строчке case 'octybr':
previously used here - в строчке case'sentybr':

вот программа

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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <math.h>
#include <conio.h>
#include <time.h>
#include <stdio.h>
#include <algorithm>
 
using namespace std;
int main()
{
    int max=0;
 
    int yanvar=0,mart=0,may=0,iul=0,avgust=0,octybr=0,decabr=0,aprel=0,iun=0,sentybr=0,noyabr=0,fevral=0;
    int yanvar1[31];
    for(int i=0;i<31; ++i)
            {
                yanvar1[i]=-16+rand()%19;
                cout<<"\n "<<yanvar1[i];
                yanvar+=yanvar1[i];
 
         }
 cout<<"\n summa"<<yanvar;
    int fevral1[28];
    for (int i=0;i<28;++i)
    {
        fevral1[i]=-23+rand()%24;
        fevral+=fevral1[i];
    }
 
    int mart1[31];
    for(int i=0;i<31; ++i)
    {
        mart1[i]=-8+rand()%13;
        mart+=mart1[i];
    }
    int aprel1[30];
    for(int i=0;i<30; ++i)
    {
        aprel1[i]=1+rand()%28;
        aprel+=aprel1[i];
    }
 
    int may1[31];
    for(int i=0;i<31; ++i)
    {
        may1[i]=13+rand()%15;
        may+=may1[i];
    }
 
    int iun1[30];
    for(int i=0;i<30; ++i)
    {
        iun1[i]=10+rand()%14;
        iun+=iun1[i];
    }
 
    int iul1[31];
    for(int i=0;i<31; ++i)
    {
        iul1[i]=15+rand()%15;
        iul+=iul1[i];
    }
 
    int avgust1[31];
    for(int i=0;i<31; ++i)
    {
        avgust1[i]=14+rand()%18;
        avgust+=avgust1[i];
    }
 
    int sentybr1[30];
    for(int i=0;i<30; ++i)
    {
        sentybr1[i]=9+rand()%15;
        sentybr+=sentybr1[i];
    }
 
    int octybr1[31];
    for(int i=0;i<31; ++i)
    {
        octybr1[i]=0+rand()%18;
        octybr+=octybr1[i];
    }
 
    int noyabr1[30];
    for(int i=0;i<30; ++i)
    {
        noyabr1[i]=-4+rand()%14;
        noyabr+=noyabr1[i];
    }
 
    int decabr1[31];
    for(int i=0;i<31; ++i)
    {
        decabr1[i]=-5+rand()%10;
        decabr+=decabr1[i];
    }
 
    yanvar=yanvar/31; cout<<"\n sr.znach"<<yanvar;
    fevral=fevral/28;
    mart=mart/31;
    aprel=aprel/30;
    may=may/31;
    iun=iun/30;
    iul=iul/31;
    avgust=avgust/31;
    sentybr=sentybr/30;
    octybr=octybr/31;
    noyabr=noyabr/30;
    decabr=decabr/31;
int T[12]={yanvar,mart,may,iul,avgust,octybr,decabr,aprel,iun,sentybr,noyabr,fevral};
for (int i=0; i<12;++i)
{
    if (T[i]>max)
        max = T[i];
 
}
switch (max)
{
case 'yanvar':
    cout<<"yanvar";
    break;
case 'fevral':
    cout<<"fevral";
    break;
case 'mart':
    cout<<"mart";
    break;
case 'aprel':
    cout<<"aprel";
    break;
case 'may':
    cout<<"may";
    break;
case 'iun':
    cout<<"iun";
    break;
case 'iul':
    cout<<"iul";
    break;
case 'avgust':
    cout<<"avgust";
    break;
case 'sentybr':
    cout<<"sentybr";
    break;
case 'octybr':
    cout<<"octybr";
    break;
case 'noyabr':
    cout<<"noyabr";
    break;
case 'decabr':
    cout<<"decabr";
    break;
}
 cout<<"\n max = "<<max;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 20:49     Ошибка проявляется только в середине, а не в начале программы
Посмотрите здесь:

Прога странным образом останавливается на середине C++
Очень странная ошибка: Функция gets() вызывается только со второго раза C++
Напечатать только те слова, перед которыми в строке находятся только меньшие слова, а за ними – только большие C++
Можно ли как-то сократить объявления using в начале программы? C++
Преобразовать строку, чтобы в ее начале были записаны слова, содержащие только цифры C++
Программы а-ля Формула - 1 (Только спокойствие.) C++
C++ vector. Заменить 3 элемента в середине одним
C++ Сделать что то типа закрытого хранилища файлов с доступом только из программы
C++ Разместить строку s1 в середине строки s2
C++ Определить виды блюд, которые есть только на завтраке, только на обеде и только на ужине
Программы из самоучителя C++ для чайников выводит ошибку. Как собрать эти же программы, только без ошибки? C++
C++ Почему нужно использовать только нечетные числа в данной реализации программы Лабиринт?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1478 / 1054 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
10.12.2012, 21:03     Ошибка проявляется только в середине, а не в начале программы #2
непонятно, как это компилится вообще.
C++
1
2
3
4
5
//max имеет тип int
switch (max)
{
 case 'yanvar': // а вот это что? в одинарных ковычках - один символ, в двойных - строка, которая в свитче запрещена
 cout<<"yanvar";
подозреваю, что копилятор преобразует
'octybr' и 'sentybr' в инт с одинаковым значением. иначе хз как оно компилится. и если это преобразование имеет место быть, тогда понятно откуда ошибка. в свитче все кейсы должны быть уникальными.
как бы там ни было, это неверный код и надо делать по другому. для начала кавычки уберите. т.е.
C++
1
2
3
4
switch (max)
{
 case yanvar: // без кавычек
 cout<<"yanvar";
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
12.12.2012, 23:25  [ТС]     Ошибка проявляется только в середине, а не в начале программы #3
я убрала, после этого всё равно ошибка(
значения у октября и сентября разные - 10 и 15
Yandex
Объявления
12.12.2012, 23:25     Ошибка проявляется только в середине, а не в начале программы
Ответ Создать тему
Опции темы

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