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

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

Войти
Регистрация
Восстановить пароль
 
 
ZerkaloTMY
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 68
#1

Почему switch case начал работать неправильно? - C++

15.02.2013, 14:50. Просмотров 632. Ответов 16
Метки нет (Все метки)

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
switch(T1)
{
case 1: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/1.jpg");
case 2: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/2.jpg");
case 3: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/3.jpg");
case 4: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/4.jpg");
case 5: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/5.jpg");
case 6: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/6.jpg");
case 7: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/7.jpg");
case 8: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/8.jpg");
case 9: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/9.jpg");
case 10: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/10.jpg");
case 11: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/11.jpg");
case 12: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/12.jpg");
case 13: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/13.jpg");
case 14: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/14.jpg");
case 15: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/15.jpg");
case 16: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/16.jpg");
case 17: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/17.jpg");
case 18: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/18.jpg");
case 19: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/19.jpg");
case 20: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/20.jpg");
case 21: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/21.jpg");
case 22: Image4->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/0.jpg");
}
Раньше все работало правильно, вроде существеннных изменений не было внесено, но вдруг начало глючить.
Ума не приложу с чего бы вдруг.
Значение Т1 рассчитывается правильно (это было проверено несколько раз и сомнений не осталось).
Тем не менее, каким бы ни было значение Т1 оно постоянно выдает последюю строку (в данном случае эту:

case 22: Image4->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/0.jpg");

То есть, ставит всегда последнюю картинку, независимо от значения Т1. Что же не так?

Добавлено через 8 минут
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
 int res1 = 0;
   while (year)
   {
        res1 += year % 10;
        year /= 10;
    }
 
if (day >= 23)
{
T1 = day - 22;
}
else
{
T1 = day;
}
 
T2 = month;
 
while (res1 >= 23)
{
res1 = res1 - 22;
}
 
T3 = res1;
 
T4 = T1 + T2;
while (T4 >= 23)
{T4 = T4 - 22;}
 
T5 = T2 + T3;
while (T5 >= 23)
{T5 = T5 - 22;}
 
T6 = T4 + T5;
while (T6 >= 23)
{T6 = T6 - 22;}
 
T7 = T1 + T5;
while (T7 >= 23)
{T7 = T7 - 22;}
 
T8 = T2 + T6;
while (T8 >= 23)
{T8 = T8 - 22;}
 
T12 = T4 + T5 + T6;
while (T12 >= 23)
{T12 = T12 - 22;}
 
T13 = T1 + T4 + T6;
while (T13 >= 23)
{T13 = T13 - 22;}
 
T14 = T3 + T5 + T6;
while (T14 >= 23)
{T14 = T14 - 22;}
 
Label6->Caption="Г’Г*ðî-Ïñèõîòèï ГЇГ® Àëèöèè ÕøГ*Г*îâñêîé. \n ГђГ*ñøèôðîâêГ* ïîçèöèé: \n 1(äåòñòâî, èëè ïåðâГ*Гї Г·Г*Г±ГІГј æèçГ*ГЁ, îðèåГ*òèðîâî÷Г*Г® äî 25 ëåò): " + IntToStr(T1)
+ "\n 2(ìîëîäîñòü, èëè âòîðГ*Гї Г·Г*Г±ГІГј æèçГ*ГЁ, îðèåГ*òèðîâî÷Г*Г® äî 50 ëåò): " + IntToStr(T2)
+ "\n 3(Г±ГІГ*ðîñòü, èëè òðåòüÿ Г·Г*Г±ГІГј æèçГ*ГЁ, îðèåГ*òèðîâî÷Г*Г® ïîñëå 50 ëåò): " + IntToStr(T3)
+ "\n 4(ïîäñîçГ*Г*Г*ГЁГҐ,* ñêðûòûå Г±ГІГ°Г*õè, êîìïëåêñû): " + IntToStr(T4)
+ "\n 5(ñîçГ*Г*Г*ГЁГҐ ГЁ Г±ГЁГ±ГІГҐГ¬Г* öåГ*Г*îñòåé): " + IntToStr(T5)
+ "\n 6(ñâåðõñîçГ*Г*Г*ГЁГҐ, äóõîâГ*ûå ïîêðîâèòåëè ГЁ ñêðûòûå ГІГ*Г«Г*Г*ГІГ»): " + IntToStr(T6)
+ "\n 7(ГЄГ*ðìè÷åñêГ*Гї Г§Г*Г¤Г*Г·Г*, îáëГ*Г±ГІГЁ ðåГ*ëèçГ*öèè æèçГ*ГҐГ*Г*îé ìèññèè): " + IntToStr(T7)
+ "\n 8(ГІГ*Г«Г*Г*ГІГ» ГЁ ñïîñîáГ*îñòè): " + IntToStr(T8)
+ "\n 12(ïñèõè÷åñêГ*Гї ГЈГ*ðìîГ*ГЁГї, óñëîâèÿ Г*åîáõîäèìûå äëÿ êîìîôðòГ* ГЁ Г±Г·Г*Г±ГІГјГї): " + IntToStr(T12)
+ "\n 13(Г±Г*ìîîöåГ*ГЄГ* ГЁ ГўГ*óòðåГ*Г*ГҐГҐ ñîñòîÿГ*ГЁГҐ): " + IntToStr(T13)
+ "\n 14(ïîâåäåГ*ГЁГҐ Гў îáùåñòâå ГЁ îöåГ*ГЄГ* ÷åëîâåêГ* îáùåñòâîì): " + IntToStr(T14);
 
switch(T1)
{
case 1: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/1.jpg");
case 2: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/2.jpg");
case 3: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/3.jpg");
case 4: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/4.jpg");
case 5: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/5.jpg");
case 6: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/6.jpg");
case 7: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/7.jpg");
case 8: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/8.jpg");
case 9: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/9.jpg");
case 10: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/10.jpg");
case 11: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/11.jpg");
case 12: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/12.jpg");
case 13: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/13.jpg");
case 14: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/14.jpg");
case 15: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/15.jpg");
case 16: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/16.jpg");
case 17: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/17.jpg");
case 18: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/18.jpg");
case 19: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/19.jpg");
case 20: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/20.jpg");
case 21: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/21.jpg");
case 22: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/0.jpg");
}
Весь код.

Т1 = 2
Но картинку вставляет будто Т1 = 22

При чем, в

case 2:

было добавлено следующее - ShowMessage("2");

Программа показала этот мессейдж и при этом проставила картинку 2 (сделало все правильно).

Но после того как мессейдж был закрыт, снова проставила неправильную картинку (0.jpg).
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2013, 14:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему switch case начал работать неправильно? (C++):

Оптимальная конструкция switch-case-while / while-switch-case - C++
Имеется конструкция типа: switch() { case 1: while() { ... }

Switch case внутри switch case - C++
Привет всем! Нужна помощь. Пишу калькулятор с консольным меню. Так вот, используется цикл while, внутри которого у меня switch...

switch-case, как писать в самом case - C++
Такс дело вот в чём,прога работает всё хорошо,вот только мне не нравится как записваю страны в кейсе,можно ли каким-нибудь образом писать в...

switch и case - C++
Пишет, что switch не содержит case, но судя по коду - это не так... как же заставить его видеть этот case? #include <iostream> ...

Switch - case - C++
Доброго времени суток. Сделал меню по такой схеме: switch(a) { case 1: { case 1: case 2: switch(aa) ...

Switch (Case) - C++
У меня есть программа, в ней по сути 2 подпрограммы, как сделать что бы при включении программы было меню выбора какое задание выполнять ? ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
anklbenz
7 / 7 / 1
Регистрация: 21.12.2012
Сообщений: 68
15.02.2013, 14:52 #2
так на вскидку, а где break; после case'ов
0
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
15.02.2013, 14:56 #3
Попадая на любой case, он доходит до последнего, потому что нету break/return.
0
ZerkaloTMY
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 68
15.02.2013, 14:57  [ТС] #4
Вьезд в тему осуществлен) проблема решена)))) спасибо всем за внимание))))))
0
Flexx02
25 / 25 / 0
Регистрация: 26.05.2012
Сообщений: 164
Записей в блоге: 1
15.02.2013, 15:00 #5
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
switch(T1)
{
case 1: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/1.jpg"); break;
case 2: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/2.jpg"); break;
case 3: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/3.jpg"); break;
case 4: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/4.jpg"); break;
case 5: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/5.jpg"); break;
case 6: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/6.jpg"); break;
case 7: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/7.jpg"); break;
case 8: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/8.jpg"); break;
case 9: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/9.jpg"); break;
case 10: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/10.jpg"); break;
case 11: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/11.jpg"); break;
case 12: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/12.jpg"); break;
case 13: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/13.jpg"); break;
case 14: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/14.jpg"); break;
case 15: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/15.jpg"); break;
case 16: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/16.jpg"); break;
case 17: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/17.jpg"); break;
case 18: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/18.jpg"); break;
case 19: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/19.jpg"); break;
case 20: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/20.jpg"); break;
case 21: Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/21.jpg"); break;
case 22: Image4->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/0.jpg"); break;
}
swich - после каждого case должен стоять break иначу будут выполнятся дальнейшие условия, тоесть те case которые идут ниже и ещо в конце нада добавть

C++
1
2
default {
}
ето, операцыя которая будет выполнятса когда не один case не подходит.
Мой совет, даже если нету никакой операцыя по default - у то все равно его добавить
0
ZerkaloTMY
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 68
15.02.2013, 15:00  [ТС] #6
извиняйте, я - просто ацький програмист, третий день програмлю))))
0
Flexx02
25 / 25 / 0
Регистрация: 26.05.2012
Сообщений: 164
Записей в блоге: 1
15.02.2013, 15:04 #7
Обращайся на то мы здесь=))
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,022
15.02.2013, 15:25 #8
Цитата Сообщение от ZerkaloTMY Посмотреть сообщение
извиняйте, я - просто ацький програмист
Я бы сказал грубее. Выкинуть нафиг этот здоровенный switch и рулить через конкатенацию строк.
0
Flexx02
25 / 25 / 0
Регистрация: 26.05.2012
Сообщений: 164
Записей в блоге: 1
15.02.2013, 16:00 #9
Цитата Сообщение от 0x10 Посмотреть сообщение
Я бы сказал грубее. Выкинуть нафиг этот здоровенный switch и рулить через конкатенацию строк.
ТОесть так=))
C++
1
Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/+"T1"+.jpg");
0
ZerkaloTMY
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 68
15.02.2013, 16:26  [ТС] #10
Цитата Сообщение от 0x10 Посмотреть сообщение
конкатенацию строк.
Действительно грубее, таких нецензурных выражений раньше слышать не приходилось.


Flexx02, афигеть, ну Вы, сударь, мастэр кодинга %) благодарю
0
ZerkaloTMY
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 68
17.02.2013, 16:03  [ТС] #11
Flexx02, сударь, этот метод не работает, компилятор ругается сильно, что делать? %)
0
Karuselia
24 / 10 / 1
Регистрация: 21.05.2012
Сообщений: 37
17.02.2013, 16:08 #12
Возвращать switch и дописывать break х))

Добавлено через 1 минуту
Цитата Сообщение от Flexx02 Посмотреть сообщение
ТОесть так=))
C++
1
Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/+"T1"+.jpg");
Немного не так.

Попробуй так
C++
1
Image1->Picture->LoadFromFile("E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/"+T1+".jpg");
0
ZerkaloTMY
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 68
17.02.2013, 16:09  [ТС] #13
Karuselia, 2085 инвалид пойнтер адишн
0
Karuselia
24 / 10 / 1
Регистрация: 21.05.2012
Сообщений: 37
17.02.2013, 16:10 #14
ZerkaloTMY, а если обратно вернуть case и switch?
0
ZerkaloTMY
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 68
17.02.2013, 16:13  [ТС] #15
C++
1
2
3
String yo1 = IntToStr(t1);
String PathImage = "E:/PRO/_Projects/First_Steps/BS/Taro/Zerkalo/" + yo1 + ".jpg";
Image1->Picture->LoadFromFile(PathImage);

Ага! Я сделало! %)))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 16:13
Привет! Вот еще темы с ответами:

switch case - C++
как в блок-схеме изображается switch case?

Switch + case - C++
Суть задания: Задан шифр книги из библиотеки в виде шестизначного целого числа. Определить к какому подразделу ...

switch i case - C++
v 4jom u menja o6ibka? i kak vivisti rezultat? # include <iostream> # include <conio.h> using namespace std; int main () ...

case-switch - C++
Вот то задание что с case-switch надо сделать помогите знаю что задание дурное


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.02.2013, 16:13
Ответ Создать тему
Опции темы

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