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

Помощь экспертов - C++

Восстановить пароль Регистрация
 
Nesteslavik
15 / 15 / 5
Регистрация: 16.02.2013
Сообщений: 46
07.10.2013, 16:59     Помощь экспертов #1
как можно автоматически создавать названия функции т.е. как можно сгенерировать название функции. Пример. имеется такая задача: что в зависимости от числа вызывается функция под названием ИмяФункцииЧисло.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2013, 16:59     Помощь экспертов
Посмотрите здесь:

C++ [помощь по литературе]
C++ Небольшая помощь
C++ Нужна помощь
Помощь с шахматами C++
C++ Помощь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
07.10.2013, 17:03     Помощь экспертов #2
никак
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
07.10.2013, 17:04     Помощь экспертов #3
switch case тебе в помощь
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
07.10.2013, 17:12     Помощь экспертов #4
Цитата Сообщение от Nesteslavik Посмотреть сообщение
что в зависимости от числа вызывается функция под названием ИмяФункцииЧисло.
А саму функцию надо тоже сгенерировать? Или необходимо только вызывать уже имеющуюся?
Krmelnik
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 10
07.10.2013, 17:17     Помощь экспертов #5
Как написать на C++: если переменная result равна S_OK, то возвратить единицу?
gromo
07.10.2013, 17:22
  #6

Не по теме:

Цитата Сообщение от Krmelnik Посмотреть сообщение
Как написать на C++: если переменная result равна S_OK, то возвратить единицу?
C++
1
2
if( result == S_OK )
    return 1;
О_0

Krmelnik
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 10
07.10.2013, 17:32     Помощь экспертов #7
Цитата Сообщение от gromo Посмотреть сообщение

Не по теме:


C++
1
2
if( result == S_OK )
    return 1;
О_0

Спасибо большое за ответ, очень даже похоже на Pyhton, теперь буду потихоньку переходить с него на С++

Добавлено через 5 минут
Gromo попрошу, если не сложно помочь в решении задачи..
Исполняемый файл один, который запускается из командной строки с параметром (номер 1 или 2)
для общения между процессами можно использовать любую реализацию IPC, но не сокеты
2) есть отдельный процесс логирования - запускается из командной строки с одним параметром - путь к логу
"общение" с процессом логирования только через сокет
3) процессы п.1 в случайном порядке отправляют произвольную текстовую информацию друг другу. При этом в логе должны появится сообщения, процесс 1 отправил процессу 2 сообщение, процесс 2 получил от процесса 1 сообщение.
4) id процессов, ip=localhost, порты ... можно "зашить в код"
5) ориентируемся на операционную систему Linux.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
07.10.2013, 17:35     Помощь экспертов #8
Krmelnik, Зачем засорять чужие темы?
Цитата Сообщение от Krmelnik Посмотреть сообщение
Gromo попрошу, если не сложно помочь в решении задачи..
а ответ вот тут подождем:
Задача на собеседование!

Вы уверены, что с такими вопросами
Цитата Сообщение от Krmelnik Посмотреть сообщение
Как написать на C++: если переменная result равна S_OK, то возвратить единицу?
стоит браться за это задание вообще?

И на всякий случай Правила форума
Krmelnik
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 10
07.10.2013, 17:41     Помощь экспертов #9
Цитата Сообщение от Croessmah Посмотреть сообщение
Krmelnik, Зачем засорять чужие темы?

а ответ вот тут подождем:
Задача на собеседование!

Вы уверены, что с такими вопросами
стоит браться за это вообще?

И на всякий случай Правила форума
Правила в данный момент читаю. Прошу прощение за дубляж.

На Python и Ruby данные вопросы/задачи так же на порядок сложнее вплоть до масштабных app решаю самостоятельно без какой либо помощи, интересует именно реализация на С++ , для принятия решения полного перехода на данный язык программирования.
Nesteslavik
15 / 15 / 5
Регистрация: 16.02.2013
Сообщений: 46
07.10.2013, 17:55  [ТС]     Помощь экспертов #10
Цитата Сообщение от Croessmah Посмотреть сообщение
А саму функцию надо тоже сгенерировать? Или необходимо только вызывать уже имеющуюся?
уже имеющиеся
_Xan_
 Аватар для _Xan_
20 / 20 / 6
Регистрация: 19.09.2010
Сообщений: 85
07.10.2013, 18:17     Помощь экспертов #11
Ну так
C++
1
2
3
4
5
6
7
8
9
10
11
12
switch(number)
{
case 0:
     function0;
     break;
case 1:
     function1;
     break;
case 2:
     function2;
     break;
}
В чем проблема то?
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
07.10.2013, 18:18     Помощь экспертов #12
Nesteslavik, единственное, что приходит на ум:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstdio>
 
void test_1() {
    printf( "test_1\n" );
}
 
void test_2() {
    printf( "test_2\n" );
}
 
#define call_test_x( x ) test_##x()
 
int main()
{
    call_test_x( 1 );
    call_test_x( 2 );
}
Правда, практической пользы тут мало..
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
07.10.2013, 18:29     Помощь экспертов #13
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
#include <iostream>
#include <map>
#include <string>
#include <sstream>
     
typedef void (*FooPointer) ( ) ;
std :: map < std :: string , FooPointer > fooCollection ;
     
     
void foo1 ( ) {
   std :: cout << "Call foo1 ( )" << std ::endl ;
}
     
void foo2 ( ) {
   std :: cout << "Call foo2 ( )" << std ::endl ;
}
     
     
int main() {
   //Добавляем указатели на функции в контейнер
   fooCollection [ "foo1" ] = foo1 ;
   fooCollection [ "foo2" ] = foo2 ;
     
   size_t num ;
   std :: cout << "Enter number" << std :: endl ;
   std :: cin >> num ;
     
   //Формируем имя
   std :: ostringstream ss ;
   ss << "foo" ;
   ss << num ;
     
   //Вызываем функцию, если она найдена.
   std :: map < std :: string , FooPointer > :: iterator it = fooCollection.find ( ss.str ( ) ) ; //Ищем функцию по имени
   if ( it != fooCollection.end ( ) )
      (*it).second ( ) ; //Вызываем функцию по указателю
}
Добавлено через 32 секунды
http://ideone.com/SFJPOq
gromo
07.10.2013, 18:39
  #14

Не по теме:

Croessmah,
А зачем использовать stringstream? Какие у него преимущества? Или такой стиль навеян ностальгией за именоваными каналами в UNIX?
Уже не однажды видел такое использование просто...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 18:42     Помощь экспертов
Еще ссылки по теме:

Помощь по С++. C++
Помощь С++ C++
Danger. Только для экспертов C++ C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
07.10.2013, 18:42     Помощь экспертов
  #15

Не по теме:

gromo, В С++ (до С++11) нету метода to_string. atoi и иже с ним в С++ коде юзать не всегда стоит. буст тащить ради одного lexical_cast тоже не очень удобно. А stringstream вполне себе справляется с задачей.

Yandex
Объявления
07.10.2013, 18:42     Помощь экспертов
Ответ Создать тему
Опции темы

Текущее время: 19:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru