Member 12879553 Ответов: 2

Как сделать переключатель в C, где случай 2 не может произойти раньше случая 1 madem


Допустим, у меня есть:
И я хочу сделать так, чтобы Случай 2 не мог произойти до того, как произойдет случай 1.
int opt = -1;
while(opt != -1){
printf("1. for stuff. 2. for other stuff);
scanf("%d", &opt);
switch(opt){
case 1:
Randomize(vek);
break;
case 2:
sort(vek);
break;
defualt:
printf("Dont exist");
}
}


Что я уже пробовал:

<pre lang="C">
typedef bool;
#define true 1
#define false 1
int opt = -1;
bool test = false;
while(opt != -1){
printf("1. for stuff. 2. for other stuff);
scanf("%d", &opt);
switch(opt){
case 1:
Randomize(vek);
test=true;
break;
if(test = true){
case 2:
sort(vek);
break;
}
defualt:
printf("Dont exist");
}
}

2 Ответов

Рейтинг:
2

OriginalGriff

Попробовать это:

while(opt != -1)
   {
   printf("1. for stuff. 2. for other stuff);
   scanf("%d", &opt);
   switch(opt)
      {
      case 1:
         Randomize(vek);
         test=true;
         break;
      case 2:
         if(test == true)
            {
            sort(vek);
            }
         break;
      default:
         printf("Dont exist");
      }
   }


Рейтинг:
1

Patrice T

Вы не можете вставить if чтобы изменить структуру switch.
То switch может обрабатывать только самое основное условие: переменная соответствует значению или нет.

Вам нужно использовать if elseif else структура.
Переменная test запомнить, что Вариант 1 выполнен, - это путь.

Вот ссылки на справочники книг по С и с++ авторов этих языков. Обратите внимание, что C является предком C++, поэтому знание C всегда полезно с C++.
Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]

Язык Программирования C++ [^]