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

Проверьте себя. А хорошо ли вы знакомы со switch'ом? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Massey-Omura http://www.cyberforum.ru/cpp/thread29744.html
Люди добрые! Помогите кто чем может в написании прграммы, выполняющей этот алгоритм на С (желательно)...
C++ Окно с активной областью? Написал прогу на С++,рисует в окошке фигуры,работа с классами,перегрузкой операций и так далее...(не суть как важно)....возникли проблемы...надо как то привязать область случайной генерации координат фигур и размерами окна...кажется через RectClient чтоли...чтобы за пределы окна не выходило....помогите кто в курсе плиз.... Добавлено через 15 минут 4 секунды Работа c MFC приложениями..... http://www.cyberforum.ru/cpp/thread29598.html
C++ Я хочу начать самостоятельно учить C/C++
Я хочу начать самостоятельно учить C/C++. Но не знаю с чего начать(перед этим я учил Delphi)!!! Посоветуйте ПЛЗ. И если можно обьясните - чем отличается C от С++ и C++ Builder от Visual C++... СПС
Перенести код считывания wav-файла на Delphi. C++
Вот сам код: typedef struct { char id_riff; long len_riff; char id_chuck; char fmt; long len_chuck;
C++ Программа-бот для игры в покер. http://www.cyberforum.ru/cpp/thread28296.html
Здравствуйте. Сам я будующий программист, учусь на 2 курсе, потихоньку осваиваю С++. У меня вопрос к уже сложившимся и опытным программистам. Возможно ли создать бота для покеррума? Я думаю большенство из вас знает о существовании онлайн покера, и многие себя в нём опробовали. Многие скажут - покер - чистая халява. По сути - это так, но на длинных дистанциях (50к и больше) партий ваш выйгрыш...
C++ Прочитал Дейтелов. Что дальше? Да, похоже придется всетаки создать тему:) Я прочиталкнигу Харви Дейтела и Пола Дейтела "Как програмить на с++" и хочу узнать, что изучать дальше. Подскажите кто знает подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 378
Регистрация: 30.03.2009
Сообщений: 16,156
Записей в блоге: 26
10.06.2009, 11:38  [ТС]
Цитата Сообщение от Patch Посмотреть сообщение
Evg, ты пишешь как ДОЛЖЕН работать switch по логике, а не как он работает в реальных компиляторах.
Поясни конкретнее, что ты имеешь ввиду. Как ДОЛЖЕН работать switch написано в стандарте. Если ты имеешь в виду, что я пишу, как должен строить код switch'а компилятор, но я не пишу, что компилятор обязан что-то делать, а пишу о том, как хороший компилятор должен строит switch, чтобы он рабоал эффективно

Цитата Сообщение от Patch Посмотреть сообщение
просто программисты компиляторов все случаи предусмотреть не могут, и, в итоге, нередко все работает совсем не так как задумано.
Опять-таки, в хорошем компиляторе должно быть предусмотрено 99% случаев. Есть граничные случаи (например, 5 альтернатив, где более эффективным оказывается не тот вариант, где просчитано математическое количество операций, а тот, где состояние кэша команд или кэша данных в конкретный момент исполнения более способствует быстрому исполнению). "Хорошие" варианты (большое количество альтернатив, лежащих плотно), нормальный компилятор построит на таблице переходов

Цитата Сообщение от Patch Посмотреть сообщение
могу подкинуть еще идею все интересующимя:
попробуйте разработать код(алгоритм) с минимальным числом переходов.
посмотрим, что у вас получится.
потом напишу, что делал я.
Опять-таки, алгоритм чего?

Добавлено через 48 секунд
Цитата Сообщение от Eternal-Thunder Посмотреть сообщение
Evg, интересно было бы, для себя, увидеть код с отступами или {}. Проверить как бы, правильно ли я понял.
Здесь тоже вопроса не осилил

Добавлено через 25 минут 50 секунд
Eternal-Thunder, долшло, что ты имел ввиду. Вот такой код. При этом считай, что case'ы и default - это обычные метки, а операция switch - это динамический goto на одну из этих меток

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
#include <stdio.h>
 
int main (void)
{
  int i,j;
 
  for (i = 0; i < 5; i++)
  {
    j=0;
 
    switch (i)
    {
      if (i != 1)
      {
        j = 11;
      } else
      {
    default:
        if (i != 2)
        {
    case 1:
          j = 22;
        } else
        {
    case 2:
          if (i != 3)
          {
    case 3:
            break;
          } else
          {
    case 4:
            j = 33;
          }
        }
      }
    }
 
    printf ("i=%d, j=%d\n", i, j);
  }
 
  return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru