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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2015, 21:39   #1
qwenbk
Новичок
Джуниор
 
Регистрация: 08.10.2015
Сообщений: 3
Сообщение Оператор switch

Всем доброго дня !

Мне необходимо сделать на Си,чтобы при вводе конкретной строки с клавиатуры выполнялась определенная последовательность действий. Что-то на подобии этого
Код:
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
  char str[80];
  scanf("%s",str);
  switch(str){
    case 'abc':
      printf("1");
      break;
    case 'free':
      printf("2");
      break;
    case 'three':
      printf("3");
      break;
  }
}
Подскажите как это устроить через switch, если это возможно

Последний раз редактировалось qwenbk; 08.10.2015 в 21:48.
qwenbk вне форума Ответить с цитированием
Старый 08.10.2015, 21:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Боюсь что switch тебе в этом не помошник...
Это препод так издевается? ИМХО единственный вариант костыльный: Считать контрольную сумму вводимой строки любым из популярных методов, и уже в switch() ее сравнивать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2015, 22:12   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Считать контрольную сумму вводимой строки
я тож про crc32 сразу подумал, а только после этого твой пост увидел.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 08.10.2015, 22:14   #4
qwenbk
Новичок
Джуниор
 
Регистрация: 08.10.2015
Сообщений: 3
По умолчанию

Да дал такое задание 1 часть сделана написать структурку с функциями, а вторая чтоб их вызывать вот таким вот образом)
qwenbk вне форума Ответить с цитированием
Старый 09.10.2015, 00:28   #5
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Ну как вариант:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>



enum 
{
    ABC ,
    FREE ,
    THREE
} ;


int get_id ( const char * str )
{
    static const char * str_arr [ ] = { "abc" , "free" , "three" } ;
    for ( int i = 0 ; i < (sizeof(str_arr)/sizeof(*str_arr)) ; ++i )
    {
        if ( strcmp(str_arr[i],str) == 0 )
            return i ;
    }
    return -1 ;
}


int main(void)
{
  char str[80];
  scanf("%s",str);
  switch( get_id(str) ){
    case ABC :
      printf("1");
      break;
    case FREE :
      printf("2");
      break;
    case THREE :
      printf("3");
      break;
    default:
      printf("command not found") ;
  }
}
Croessmah вне форума Ответить с цитированием
Старый 09.10.2015, 06:01   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Боюсь что switch тебе в этом не помошник...
Помощник. Только нужно это делать через перечисления.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 09.10.2015 в 06:22.
Smitt&Wesson вне форума Ответить с цитированием
Старый 09.10.2015, 06:55   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Осталось только придумать как из строки получить enum...
waleri вне форума Ответить с цитированием
Старый 09.10.2015, 20:40   #8
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от qwenbk Посмотреть сообщение
Всем доброго дня !

Мне необходимо сделать на Си,чтобы при вводе конкретной строки с клавиатуры выполнялась определенная последовательность действий. Что-то на подобии этого
Код:
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
  char str[80];
  scanf("%s",str);
  switch(str){
    case 'abc':
      printf("1");
      break;
    case 'free':
      printf("2");
      break;
    case 'three':
      printf("3");
      break;
  }
}
Подскажите как это устроить через switch, если это возможно
http://rextester.com/ZMGB29007

Код:
#include <iostream>

template< class Val > struct SwithClass{

    SwithClass( const Val & v )
        :val(v)
    {}

    void operator()()const {}

    template < class E, class F, class ... Args >
    void operator()( E&& e, F f, Args&& ... args )const {
        if( e == val )
            f(); 
        else
            (*this)( std::forward<Args>(args)... );
    }
private:
    Val val;
};

template<class Val>
SwithClass<Val> Swith( const Val& v ){
    return SwithClass<Val>(v);
}

#define CASE(n) n,[]()

int main()
{
    auto x = "trololo";
    
    Swith(x) (
        
        CASE("ololo")   { std::cout <<"ololo\n";   },
        CASE("trololo") { std::cout <<"trololo\n"; } 
    );
}
_Bers вне форума Ответить с цитированием
Старый 09.10.2015, 20:47   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

я бы поступил тупо:
Код:
if (str == "abc")
 i = 1;
else if (str == "bcd")
  i = 2;
...
switch (i)
case 1:
  ...
case 2:
  ...
switch есть, задание выполняется, дальше уже общаться с преподом
pu4koff вне форума Ответить с цитированием
Старый 09.10.2015, 20:49   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С же надо, а не С++.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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