Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2010, 14:50   #1
Jabodav
 
Аватар для Jabodav
 
Регистрация: 29.01.2010
Сообщений: 6
Сообщение Visual C++ Двойное ветвление через радиокнопки.

Помогите плиз кто чем может Решил добить старую прогу. Она давно реализована на С++ хочу переделать на MFC но ни как не могу решить проблему.
Дано: Три радиокнопки и обычная кнопка (подтверждающая выбор).
Задача: Выбираем любую радиокнопку нажимаем подтверждение обычной кнопкой, получаем какойнибдь результат, например MessageBox("1"); С этим все понятно, а вот дальше необходимо использовать ветвление, если выбран первый радиобаттон в предыдущем случае, то пользуя теже радиокнопки выбираем три другие варианта. Весь код завязываю на обычную кнопку и в итоге получаю то что программа выпоняется сразу по всем ветвлениям от начала до конца, а надо каждый выбор подтверждать кнопкой.
Код:
switch (m_r1)//m_r1-переменная радиокнопки
{
case 0:	
MessageBox("1");
        switch (m_r1) //m_r1-переменная радиокнопки
	{
         case 0:	
                 MessageBox("4");
                 break;
         case 1:			
                 MessageBox("5");   
                 break;
         case 2:				
		 MessageBox("6");
                 break;
        default: MessageBox("0");
	}
        break;

case 1:	
MessageBox("2");

	switch (m_r1) //m_r1-переменная радиокнопки
			{
	case 0:	
		MessageBox("7");			
                break;
        case 1:		
		MessageBox("8");
                break;
        case 2:		
		MessageBox("9");
                break;
	default: MessageBox("0");
}
        break;

case 2:
MessageBox("3");	

	switch (m_r1)//m_r1-переменная радиокнопки
	{
	case 0:			
		MessageBox("10");
                break;

	case 1:			
		MessageBox("11");
                break;
        case 2:		
		MessageBox("12");
                break;
	default: 	MessageBox("0");

}
        break;
default: 	MessageBox("0"); 
  }
Есть мысли что можно сделать чтобы при первом выборе появилось 1 2 или 3 а при втором значения от 4 до 12 в зависимости от выбора, а не при первом нажатии выполнялся сразу весь код.
momento mori
Jabodav вне форума Ответить с цитированием
Старый 29.01.2010, 19:17   #2
Jabodav
 
Аватар для Jabodav
 
Регистрация: 29.01.2010
Сообщений: 6
По умолчанию

Может вообще как нибудь по другому это надо делать, пробовал через IF тоже не получилось.
momento mori
Jabodav вне форума Ответить с цитированием
Старый 30.01.2010, 00:17   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

у тебя всегда будет результат 0 - 0, 1 - 1, 2 - 2, другое значение - 0;
т.е. никакого ветвления

зачем одну и ту же переменную проверяешь на входные данные два раза? смысл в чем? чтобы было ветвление нужно как минимум 2 переменных
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 30.01.2010, 11:31   #4
Jabodav
 
Аватар для Jabodav
 
Регистрация: 29.01.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
у тебя всегда будет результат 0 - 0, 1 - 1, 2 - 2, другое значение - 0;
т.е. никакого ветвления

зачем одну и ту же переменную проверяешь на входные данные два раза? смысл в чем? чтобы было ветвление нужно как минимум 2 переменных
На самом деле получается если выбрать первый радиобатон (1 и сразуже 4) второй (2 - 8) и третий (3 - 12) Хочу сделать чтобы после первого выбора (где выскакивает 1, 2 или 3 ) можно было бы нажать радиокнопки еще раз и пошло следующее ветвление, а получается все сразу.
Вы предлагаете задать задать группе радиокнопок две переменные? Первый switch использовать одну а второй switch использовать другую ?
momento mori
Jabodav вне форума Ответить с цитированием
Старый 30.01.2010, 13:07   #5
Jabodav
 
Аватар для Jabodav
 
Регистрация: 29.01.2010
Сообщений: 6
По умолчанию

Переделал все вот таким образом
Код:
switch (m_r1)//m_r1-переменная радиокнопки

{
	case 0:	
			MessageBox("1");
			break;
	case 1:	
			MessageBox("2");
			break;
	case 2:
			MessageBox("3");
			break;
default: 	MessageBox("0"); 
	break;
}
		if (m_r1==0)
		{
		switch (m_r1)
	{

	case 0:	
                 MessageBox("4");
                 break;
	case 1:			
                 MessageBox("5");   
                 break;
	case 2:				
				 MessageBox("6");
                 break;
	default: MessageBox("0");
	break;
	}
		}
		if (m_r1==1)
		{
			switch (m_r1) //m_r1-переменная радиокнопки
			{
	case 0:	
				MessageBox("7");			
               break;
	case 1:			
				MessageBox("8");
              break;
	case 2:			
				MessageBox("9");
              break;
	default: MessageBox("0");
	break;
			}
		}
		if (m_r1==2)
		{
				switch (m_r1)//m_r1-переменная радиокнопки
	{
	case 0:			
				MessageBox("10");
               break;
	case 1:			
				MessageBox("11");
               break;
	case 2:		
				MessageBox("12");
               break;
	default: 	MessageBox("0");
	break;
	}
		}
Результат тот же, если группе радиокнопок присвоить вторую переменную, и ее использовать при вторых ветвлениях ничего не меняется.
Люди нужны мысли, пробовал обнулить значения радиокнопок, не помогает.
momento mori
Jabodav вне форума Ответить с цитированием
Старый 30.01.2010, 18:55   #6
Jabodav
 
Аватар для Jabodav
 
Регистрация: 29.01.2010
Сообщений: 6
По умолчанию

Спасибо RUSt88 удалось сделать через вторую переменную.
momento mori
Jabodav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ветвление (Pascal) Павлик_ Помощь студентам 1 28.01.2010 08:37
Паскаль:ветвление alien-kurgan Помощь студентам 1 27.11.2009 17:42
Как Переход в ячейку через двойное условие? Talisman Microsoft Office Excel 11 21.11.2009 15:32
ветвление felmor Помощь студентам 1 28.02.2009 13:42