Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Swich в цикле 
:(
    Опции темы
Serbis
Дата 26.3.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 9.12.2007

Репутация: нет
Всего: нет



Суперлам вопрос, коли уж взялся. 
Код

for (int i=0; i<=31; i++) {
     switch(index)
        {
         case i:
          currentFont->setPointSize(i*2);
          break;
        }
    }

Естественно ошибка i не константа. index передает int. Преприсвоение i для const int результатов не дало. Я конечно понимаю что спрашиваю совсем ламерскую вещь, но все же, как заставить этот код работать? smile  

Это сообщение отредактировал(а) Serbis - 26.3.2008, 16:38
PM MAIL   Вверх
just_geek
Дата 26.3.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 1
Всего: 10



Чем же if не устраивает?
PM MAIL   Вверх
korian
Дата 26.3.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



никак
лучше скажите что надо, посоветуем как это лучше сделать.
PM   Вверх
Serbis
Дата 26.3.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 9.12.2007

Репутация: нет
Всего: нет



Имеется 32 возможных значения index, под каждое значение нужно выполнить свое действие, конкретно index*2. Что ж мне, 32 ifа или caseа делать что ли?

Это сообщение отредактировал(а) Serbis - 26.3.2008, 16:54
PM MAIL   Вверх
Optimus
Дата 26.3.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 1.9.2007

Репутация: нет
Всего: 14



Что то я не пойму, зачем тут нужен switch() ?

Код

for (int i=0; i<=31; i++) 
  currentFont->setPointSize(i*2);

так не пойдёт ?

Код

currentFont->setPointSize(index*2);

а может так ?
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
Kozel
Дата 26.3.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



 smile Согласен с Optimus. Действительна, какой смысл switch'a или if? 
PM MAIL   Вверх
korian
Дата 26.3.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



Цитата(Serbis @  26.3.2008,  15:53 Найти цитируемый пост)
Имеется 32 возможных значения index, под каждое значение нужно выполнить свое действие, конкретно index*2. Что ж мне, 32 ifа или caseа делать что ли

не очень понятно что вы хотите...
попробуемс порассуждать...
есть значит у нас 32 значений index'a, под каджое надо выполнить свои действия...
вариант 1 - пишем 33 класса. один базовый, остальные наследники:
Код

class Base
{
    virtual ~Base();
    virtual void operator () ();
};
class Func1 : public Base
{
    virtual void operator () ()
    {
        //шото делаем
    }
};
class Func2 : public Base
....
в программе делаем массив
std::vector<Base*> vect;
vect.push_back(new Func1);
vect.push_back(new Func2);
...
vect.push_back(new Func32); //главное потом не забыть удалить %)

в программе используем: у нас значит есть индекс...
vect[index](); //усе, выполнился код соответствующий нужной цифре
как вариант 2, заменить классы на указатели функций.
если вся эта бадяга в программе будет использоваться только один раз имху лучше ифов понаписывать или switch'ем
а мож я так и не понял что надо.


Это сообщение отредактировал(а) korian - 26.3.2008, 20:46
PM   Вверх
inside_pointer
Дата 27.3.2008, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: -1
Всего: 12



тут не нужен ни switch ни if ни for

index уже известен, надо произвести одно действие с ним

а это пример нестандартного программирования  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.