Консольное иерархическое меню в Си

Есть задание - необходимо сделать меню в теле основной функции main, предусматривающее выбор типа задания, с посл. переходом на вариант выбора вводных данных. Вероятно..я пошел неправильным путем, избыточным. И запутался в трех соснах.

Я хочу, чтоб: после выбора типа заданий переходило на выбора варианта ввода заданий (дальнейшая нагрузка выпадала на прототип функции разм. в другом файле) и после этого выходило непосредственно обратно к изначальному положению. А у меня при исходом положении кода переходит к следующему значению оператора case.. несмотря на break. Помогите пожалуйста

#include <stdio.h>
#include <conio.h>
#include <clocale>


int main()
{   setlocale (LC_ALL,"Russian");
    setlocale (LC_ALL,"rus");

    int deystvie;
    int deystvie1;
    int deystvie2;
    int deystvie3;
    double a, b, c;
    printf ("----------Меню----------: \n");
    printf ("1 - Обработка массива.\n");
    printf ("2 - Обработка матриц.\n");
    printf ("3 - Задача с использованием геометрических данных.\n");
    printf ("Выберите действие:\n ");
    scanf("%i",&deystvie);


    switch (deystvie)
      {
        case 1 : 
                 {
                 printf("-----Обработка массива-----\n ");
                 printf("Выберите нужное действие1:\n ");
                 printf("1.Ввод исходных данных с консоли1 \n ");
                 printf("2.Ввод исходных данных с файла1\n ");
                 printf("3.Задание массива случайным образом1\n ");             
                 scanf("%i",&deystvie1);

                 switch(deystvie1)
                 {
                 case 1: printf("-------Введите данные с консоли-------");
                     // вызываемый прототип функции ввода и обработки данных с консоли
                 break;
                 case 2: printf("-------Введите данные с файла, расположенного в (путь)-------");
                     // вызываемый прототип функции ввода и обработки данных с файла
                 break;
                 case 3: printf("-------Массив генерируется...)-------");
                     // вызываемый прототип функции генерации и обработки данных
                 break;
                 default: break; 
                 }

                 }

        case 2 : 
                 {  
                 printf("-----Обработка матрицы-----\n ");
                 printf("Выберите нужное действие2:\n ");
                 printf("1.Ввод исходных данных с консоли2 \n ");
                 printf("2.Ввод исходных данных с файла2\n ");
                 printf("3.Задание матрицы случайным образом2\n ");             
                 scanf("%i",&deystvie2);

                 switch(deystvie2)
                 {
                 case 1: printf("-------Введите данные с консоли-------");
                     // вызываемый прототип функции ввода и обработки данных с консоли
                 break;
                 case 2: printf("-------Введите данные с файла, расположенного в (путь)-------");
                     // вызываемый прототип функции ввода и обработки данных с файла
                 break;
                 case 3: printf("-------Массив генерируется...)-------");
                     // вызываемый прототип функции генерации и обработки данных
                 break;
                 default: break; 
                 }


                 }
        }

         case 3 : 
             {
                  printf("-----Обработка геометрического3-----\n ");
                  printf("Выберите нужное действие3:\n ");
                  printf("1.Ввод исходных данных с консоли3 \n ");
                  printf("2.Ввод исходных данных с файла3\n ");
                  printf("3.Задание массива случайным образом3\n ");             
                 scanf("%i",&deystvie3);

                 switch(deystvie3)
                 {
                 switch(deystvie2)
                 {
                 case 1: printf("-------Введите данные с консоли-------");
                     // вызываемый прототип функции ввода и обработки данных с консоли
                 break;
                 case 2: printf("-------Введите данные с файла, расположенного в (путь)-------");
                     // вызываемый прототип функции ввода и обработки данных с файла
                 break;
                 case 3: printf("-------Массив генерируется...)-------");
                     // вызываемый прототип функции генерации и обработки данных
                 break;
                 default: break; 
                 }

                 }


        default: printf("Выбрано неправильное значение.\n");break;
       }
    }

    getch();
    return 0;
}

Ответы (0 шт):