Консольное иерархическое меню в Си
Есть задание - необходимо сделать меню в теле основной функции 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;
}