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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2015, 21:04   #11
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
  char str[80];
  scanf("%s",str);
  switch(str[0]){
    case 'a':
      printf("1");
      break;
    case 'f':
      printf("2");
      break;
    case 't':
      printf("3");
      break;
  }
}
_Bers вне форума Ответить с цитированием
Старый 10.10.2015, 06:25   #12
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

_Bers, если не ошибаюсь, то в if( e == val ) будете сравнивать адреса строк. В продолжение темы: для разделения логики от обработчиков предлагаю такой вариант:
Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    bool (*handler[])(const string &agr)
    {
        [](const string &arg)
        {
            if(arg != "ololo") return false;
            cout << "ololo\n";
            return true;
        },
        [](const string &arg)
        {
            if(arg != "trololo") return false;
            cout << "trololo\n";
            return true;
        },
        [](const string &)
        {
            cout << "default\n";
            return true;
        }
    };

    string str;
    getline(cin, str);
    for(bool(*h)(const string &) : handler)
    {
        if( h(str) )
            break;
    }
}
220Volt вне форума Ответить с цитированием
Старый 10.10.2015, 07:05   #13
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Осталось только придумать как из строки получить enum...
Зачем их в строку переделывать? Это просто именованные константы. Используются в основном, для улучшения читабельности листингов.

Код:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

void main(void)
{
  enum {abc, free, three};
  char c[][5] = {"abc", "free", "three"};
  char p[5];
  scanf("%s", p);
  int i;
  for(i=0; i < 3; i++)
   if(strcmpi(c[i], p) == 0) break;

  switch(i){
    case abc:
      {
      printf("1");
      break;
      }
    case free:
      {
      printf("2");
      break;
      }
    case three:
      {
      printf("3");
      break;
      }
    default: printf("No comands");
 }
  cout << endl;
  system("PAUSE");
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 10.10.2015 в 07:13.
Smitt&Wesson вне форума Ответить с цитированием
Старый 10.10.2015, 09:21   #14
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Вы делаете разницу между "в" и "из"?
Пожалуйста, читайте внимательней.
waleri вне форума Ответить с цитированием
Старый 10.10.2015, 09:38   #15
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Вы делаете разницу между "в" и "из"?
Пожалуйста, читайте внимательней.
Я Вас понял. Только "ИЗ" энума, получить имена констант процедура довольно громоздкая и вообще-то не очень нужная. Лучше их использовать по назначению, чем выдумывать всякие костыли.
Переделать строку в энум? Такого я не встречал нигде. По-ходу, это наверное и не возможно сделать (ИМХО).
Может я не очень правильно высказал мысль об использовании enum, но имел в виду именно то, что написано у меня в последнем листинге.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 10.10.2015 в 09:41.
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.10.2015, 02:28   #16
qwenbk
Новичок
Джуниор
 
Регистрация: 08.10.2015
Сообщений: 3
По умолчанию

Пару полезных советом нашел, всем спасибо.
Я в принцепи об этом тоже потом подумал
Цитата:
Сообщение от pu4koff Посмотреть сообщение
я бы поступил тупо:
Код:
if (str == "abc")
 i = 1;
else if (str == "bcd")
  i = 2;
...
switch (i)
case 1:
  ...
case 2:
  ...
switch есть, задание выполняется, дальше уже общаться с преподом
qwenbk вне форума Ответить с цитированием
Старый 11.10.2015, 17:05   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я в принцепи об этом тоже потом подумал
То, что препод дал такое задание говорит о отсутствии у него моска.
Если он примет такой ответ - значит что в прежней жизни он был наркоманом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператор switch XeniaZharinova C# (си шарп) 4 07.12.2014 20:19
C++ оператор SWITCH Ramina Помощь студентам 10 05.02.2012 19:32
switch оператор Alex-Kunfuman Общие вопросы C/C++ 28 22.01.2012 04:42
C++ оператор switch Pingvinenok_Lolo Помощь студентам 4 05.12.2011 23:11
оператор switch aank10 Общие вопросы C/C++ 3 01.06.2011 10:28