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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2013, 01:16   #1
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию c++ как оптимизировать функцию ?

как оптимизировать функцию vibor()?
(проект MSVS 2012)

Код:
 void vibor()
	{
		l:
	int ch = _getch();
	

     if(ch ==224)
		switch(ch)
	{
		case 80:
			if(ConsoleCurrent<=4)
			++ConsoleCurrent;
			else if(ConsoleCurrent >4){ConsoleCurrent = 1;}
			DrawMainMenu();
			break;
		case  72:

			if (ConsoleCurrent >=1)--ConsoleCurrent;
			else if(ConsoleCurrent <1){ConsoleCurrent = 4;}
			DrawMainMenu();
			break;
			
			case 13:
				enter(ConsoleCurrent);
				break;
			case 27:{
				int Result = MessageBox(0,L"хотите выйти?",L" ",MB_OK);
				if(Result == IDYES){exit(0);}
				else{ DrawMainMenu();}
				}
				break;
	
			case 75:
	{
		ShowContextMenu();
	}
	
			default :
				goto l;
		}
	 switch(ch)
    {
    case 80: 
		if(ConsoleCurrent<=4) {++ConsoleCurrent;}
		if(ConsoleCurrent >4){ConsoleCurrent = 1;}
       
        
          DrawMainMenu();
        break;
    case 72: 
        if(ConsoleCurrent>=1) {--ConsoleCurrent;}
     if(ConsoleCurrent <1){ConsoleCurrent = 4;}
        DrawMainMenu();
        break;
    case 13: 
        enter(ConsoleCurrent);
        break;

		case 27:
				{
					
				
			
                  int Result = MessageBox(0,L"хотите выйти?",L" ",MB_YESNO);
				if (Result == IDYES){
				exit(0);

				}
				else{ DrawMainMenu();
				}
					
					}
				break;
				case 75:
	{
		ShowContextMenu();
	}
	break;
	default:
		goto l;
	 }}
весь код здесь
Вложения
Тип файла: rar text.rar (6.0 Кб, 8 просмотров)
proef вне форума Ответить с цитированием
Старый 04.12.2013, 01:28   #2
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

так то оно работает но как сделать без goto операторов?
proef вне форума Ответить с цитированием
Старый 04.12.2013, 01:53   #3
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Например, через while:

Код:
char TestExit(char ch){
	if (ch == 27)
	{
		int Result = MessageBox(0,L"хотите выйти?",L" ",MB_OK);
		if(Result == IDYES)
			return 0;

	}
	return ch;
}

void vibor()
{
	int ch;
	while(ch = TestExit(_getch()){
		switch (ch){
			case 1:
				....
			break;
			case 2:
				....
			break;
		}
	}
}
Smogg вне форума Ответить с цитированием
Старый 04.12.2013, 21:21   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Код:
if(ch ==224)
		switch(ch)
	{
		case 80:
Думаю, ее лучше переписать, а не оптимизировать.
Son Of Pain вне форума Ответить с цитированием
Старый 04.12.2013, 22:22   #5
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

ну и как её переписать ?
обьясните
proef вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте как оптимизировать Karmadon Общие вопросы C/C++ 9 29.02.2012 22:47
Как оптимизировать? А)-(дрей Microsoft Office Excel 31 12.04.2011 21:38
Как оптимизировать код C++ slim>>> Помощь студентам 10 25.01.2011 00:05
Оптимизировать функцию Utkin Общие вопросы Delphi 31 08.07.2009 09:20
Как оптимизировать плиззз alex181264 Microsoft Office Excel 3 13.04.2009 06:27