double selectionswitchPower(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
    	   "1 - Микроваты;\n"
           "2 - Милливаты;\n"
           "3 - Ваты;\n"
           "4 - Киловаты;\n"
           "5 - Мегаваты;\n"
           "6 - Килограмм-сил-метры в секунду;\n"
           "7 - Эрг в секунду;\n"
           "8 - Лошадиные силы(метрических);\n"
           "9 - Лошадиные силы(английских);\n\t");
    scanf("%s", key.in);       
    key.input_choice = parsing_id(key.in);
    while(key.input_choice >= 10 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.in);       
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
    	   "1 - Микроваты;\n"
           "2 - Милливаты;\n"
           "3 - Ваты;\n"
           "4 - Киловаты;\n"
           "5 - Мегаваты;\n"
           "6 - Килограмм-сил-метры в секунду;\n"
           "7 - Эрг в секунду;\n"
           "8 - Лошадиные силы(метрических);\n"
           "9 - Лошадиные силы(английских);\n\t");
    scanf("%s", key.out);       
    key.input_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.output_choice >= 10 || key.output_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.out);       
        key.input_choice = parsing_id(key.out);
    }

    key.id = key.input_choice * 10 + key.output_choice;

    switch(key.id) {
        case 12:
            key.gate = Vat2MlVat(MkVat2Vat(MEASUREMENT));
            break;
        case 13:
            key.gate = MkVat2Vat(MEASUREMENT);
            break;
        case 14:
            key.gate = Vat2kVat(MkVat2Vat(MEASUREMENT));
            break;
        case 15:
            key.gate = Vat2mVat(MkVat2Vat(MEASUREMENT));
            break;
        case 16:
            key.gate = Vat2kgSilaMvS(MkVat2Vat(MEASUREMENT));
            break;
        case 17:
            key.gate = Vat2ErgS(MkVat2Vat(MEASUREMENT));
            break;
        case 18:
            key.gate = Vat2HorsePowMetr(MkVat2Vat(MEASUREMENT));
            break;
        case 19:
            key.gate = Vat2HorsePowEng(MkVat2Vat(MEASUREMENT));
            break;
        case 21:
            key.gate = Vat2MkVat(MlVat2Vat(MEASUREMENT));
            break;
        case 23:
            key.gate = MlVat2Vat(MEASUREMENT);
            break;
        case 24:
            key.gate = Vat2kVat(MlVat2Vat(MEASUREMENT));
            break;
        case 25:
            key.gate = Vat2mVat(MlVat2Vat(MEASUREMENT));
            break;
        case 26:
            key.gate = Vat2kgSilaMvS(MlVat2Vat(MEASUREMENT));
            break;
        case 27:
            key.gate = Vat2ErgS(MlVat2Vat(MEASUREMENT));
            break;
        case 28:
            key.gate = Vat2HorsePowMetr(MlVat2Vat(MEASUREMENT));
            break;
        case 29:
            key.gate = Vat2HorsePowEng(MlVat2Vat(MEASUREMENT));
            break;
        case 31:
            key.gate = Vat2MkVat(MEASUREMENT);
            break;
        case 32:
            key.gate = Vat2MlVat(MEASUREMENT);
            break;
        case 34:
            key.gate = Vat2kVat(MEASUREMENT);
            break;
        case 35:
            key.gate = Vat2mVat(MEASUREMENT);
            break;
        case 36:
            key.gate = Vat2kgSilaMvS(MEASUREMENT);
            break;
        case 37:
            key.gate = Vat2ErgS(MEASUREMENT);
            break;
        case 38:
            key.gate = Vat2HorsePowMetr(MEASUREMENT);
            break;
        case 39:
            key.gate = Vat2HorsePowEng(MEASUREMENT);
            break;
        case 41:
            key.gate = Vat2MkVat(kVat2Vat(MEASUREMENT));
            break;
        case 42:
            key.gate = Vat2MlVat(kVat2Vat(MEASUREMENT));
            break;
        case 43:
            key.gate = kVat2Vat(MEASUREMENT);
            break;
        case 45:
            key.gate = Vat2mVat(kVat2Vat(MEASUREMENT));
            break;
        case 46:
            key.gate = Vat2kgSilaMvS(kVat2Vat(MEASUREMENT));
            break;
        case 47:
            key.gate = Vat2ErgS(kVat2Vat(MEASUREMENT));
            break;
        case 48:
            key.gate = Vat2HorsePowMetr(kVat2Vat(MEASUREMENT));
            break;
        case 49:
            key.gate = Vat2HorsePowEng(kVat2Vat(MEASUREMENT));
            break;
        case 51:
            key.gate = Vat2MkVat(mVat2Vat(MEASUREMENT));
            break;
        case 52:
            key.gate = Vat2MlVat(mVat2Vat(MEASUREMENT));
            break;
        case 53:
            key.gate = mVat2Vat(MEASUREMENT);
            break;
        case 54:
            key.gate = Vat2kVat(mVat2Vat(MEASUREMENT));
            break;
        case 56:
            key.gate = Vat2kgSilaMvS(mVat2Vat(MEASUREMENT));
            break;
        case 57:
            key.gate = Vat2ErgS(mVat2Vat(MEASUREMENT));
            break;
        case 58:
            key.gate = Vat2HorsePowMetr(mVat2Vat(MEASUREMENT));
            break;
        case 59:
            key.gate = Vat2HorsePowEng(mVat2Vat(MEASUREMENT));
            break;
        case 61:
            key.gate = Vat2MkVat(kgSilaMvS2Vat(MEASUREMENT));
            break;
        case 62:
            key.gate = Vat2MlVat(kgSilaMvS2Vat(MEASUREMENT));
            break;
        case 63:
            key.gate = kgSilaMvS2Vat(MEASUREMENT);
            break;
        case 64:
            key.gate = Vat2kVat(kgSilaMvS2Vat(MEASUREMENT));
            break;
        case 65:
            key.gate = Vat2mVat(kgSilaMvS2Vat(MEASUREMENT));
            break;
        case 67:
            key.gate = Vat2ErgS(kgSilaMvS2Vat(MEASUREMENT));
            break;
        case 68:
            key.gate = Vat2HorsePowMetr(kgSilaMvS2Vat(MEASUREMENT));
            break;
        case 69:
            key.gate = Vat2HorsePowEng(kgSilaMvS2Vat(MEASUREMENT));
            break;
        case 71:
            key.gate = Vat2MkVat(ErgS2Vat(MEASUREMENT));
            break;
        case 72:
            key.gate = Vat2MlVat(ErgS2Vat(MEASUREMENT));
            break;
        case 73:
            key.gate = ErgS2Vat(MEASUREMENT);
            break;
        case 74:
            key.gate = Vat2kVat(ErgS2Vat(MEASUREMENT));
            break;
        case 75:
            key.gate = Vat2mVat(ErgS2Vat(MEASUREMENT));
            break;
        case 76:
            key.gate = Vat2kgSilaMvS(ErgS2Vat(MEASUREMENT));
            break;
        case 78:
            key.gate = Vat2HorsePowMetr(ErgS2Vat(MEASUREMENT));
            break;
        case 79:
            key.gate = Vat2HorsePowEng(ErgS2Vat(MEASUREMENT));
            break;
        case 81:
            key.gate = Vat2MkVat(HorsePowMetr2Vat(MEASUREMENT));
            break;
        case 82:
            key.gate = Vat2MlVat(HorsePowMetr2Vat(MEASUREMENT));
            break;
        case 83:
            key.gate = HorsePowMetr2Vat(MEASUREMENT);
            break;
        case 84:
            key.gate = Vat2kVat(HorsePowMetr2Vat(MEASUREMENT));
            break;
        case 85:
            key.gate = Vat2mVat(HorsePowMetr2Vat(MEASUREMENT));
            break;
        case 86:
            key.gate = Vat2kgSilaMvS(HorsePowMetr2Vat(MEASUREMENT));
            break;
        case 87:
            key.gate = Vat2ErgS(HorsePowMetr2Vat(MEASUREMENT));
            break;
        case 89:
            key.gate = Vat2HorsePowEng(HorsePowMetr2Vat(MEASUREMENT));
            break;
        case 91:
            key.gate = Vat2MkVat(HorsePowEng2Vat(MEASUREMENT));
            break;
        case 92:
            key.gate = Vat2MlVat(HorsePowEng2Vat(MEASUREMENT));
            break;
        case 93:
            key.gate = HorsePowEng2Vat(MEASUREMENT);
            break;
        case 94:
            key.gate = Vat2kVat(HorsePowEng2Vat(MEASUREMENT));
            break;
        case 95:
            key.gate = Vat2mVat(HorsePowEng2Vat(MEASUREMENT));
            break;
        case 96:
            key.gate = Vat2kgSilaMvS(HorsePowEng2Vat(MEASUREMENT));
            break;
        case 97:
            key.gate = Vat2ErgS(HorsePowEng2Vat(MEASUREMENT));
            break;
        case 98:
            key.gate = Vat2HorsePowMetr(HorsePowEng2Vat(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
double selectionswitchTemperature(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Градус Делиля;\n"
           "2 - Градус Кельвина;\n"
           "3 - Градус Ньтона;\n"
           "4 - Градус Ранкина;\n"
           "5 - Градус Реомюра;\n"
           "6 - Градус Рёмера;\n"
           "7 - Градус Цельсия;\n"
           "8 - Градус Фаренгейта;\n \t");
    //scanf("%d", &key.input_choice);
    key.input_choice = parsing_id(key.in);
    while(key.input_choice >= 9 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%d", &key.input_choice);
    }

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Градус Делиля;\n"
           "2 - Градус Кельвина;\n"
           "3 - Градус Ньтона;\n"
           "4 - Градус Ранкина;\n"
           "5 - Градус Реомюра;\n"
           "6 - Градус Рёмера;\n"
           "7 - Градус Цельсия;\n"
           "8 - Градус Фаренгейта;\n \t");
    //scanf("%d", &key.output_choice);
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.output_choice >= 9 || key.input_choice == 0)  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%d", &key.output_choice);
    }

    key.id = key.input_choice * 10 + key.output_choice;

    switch(key.id) {
        case 12:
            key.gate = DelislesTOKelvins(MEASUREMENT);
            break;
        case 13:
            key.gate = DelislesTONewtons(MEASUREMENT);
            break;
        case 14:
            key.gate = DelislesTORankines(MEASUREMENT);
            break;
        case 15:
            key.gate = DelislesTOReaumurs(MEASUREMENT);
            break;
        case 16:
            key.gate = DelislesTORomers(MEASUREMENT);
            break;
        case 17:
            key.gate = DelislesTOCelsius(MEASUREMENT);
            break;
        case 18:
            key.gate = DelislesTOFahrenheits(MEASUREMENT);
            break;
        case 21:
            key.gate = KelvinsTODelisles(MEASUREMENT);
            break;
        case 23:
            key.gate = KelvinsTONewtons(MEASUREMENT);
            break;
        case 24:
            key.gate = KelvinsTORankines(MEASUREMENT);
            break;
        case 25:
            key.gate = KelvinsTOReaumurs(MEASUREMENT);
            break;
        case 26:
            key.gate = KelvinsTORomers(MEASUREMENT);
            break;
        case 27:
            key.gate = KelvinsTOCelsius(MEASUREMENT);
            break;
        case 28:
            key.gate = KelvinsTOFahrenheits(MEASUREMENT);
            break;
        case 31:
            key.gate = NewtonsTODelisles(MEASUREMENT);
            break;
        case 32:
            key.gate = NewtonsTOKelvins(MEASUREMENT);
            break;
        case 34:
            key.gate = NewtonsTORankines(MEASUREMENT);
            break;
        case 35:
            key.gate = NewtonsTOReaumurs(MEASUREMENT);
            break;
        case 36:
            key.gate = NewtonsTORomers(MEASUREMENT);
            break;
        case 37:
            key.gate = NewtonsTOCelsius(MEASUREMENT);
            break;
        case 38:
            key.gate = NewtonsTOFahrenheits(MEASUREMENT);
            break;
        case 41:
            key.gate = RankinesTODelisles(MEASUREMENT);
            break;
        case 42:
            key.gate = RankinesTOKelvins(MEASUREMENT);
            break;
        case 43:
            key.gate = RankinesTONewtons(MEASUREMENT);
            break;
        case 45:
            key.gate = RankinesTOReaumurs(MEASUREMENT);
            break;
        case 46:
            key.gate = RankinesTORomers(MEASUREMENT);
            break;
        case 47:
            key.gate = RankinesTOCelsius(MEASUREMENT);
            break;
        case 48:
            key.gate = RankinesTOFahrenheits(MEASUREMENT);
            break;
        case 51:
            key.gate = ReaumursTODelisles(MEASUREMENT);
            break;
        case 52:
            key.gate = ReaumursTOKelvins(MEASUREMENT);
            break;
        case 53:
            key.gate = ReaumursTONewtons(MEASUREMENT);
            break;
        case 54:
            key.gate = ReaumursTORankines(MEASUREMENT);
            break;
        case 56:
            key.gate = ReaumursTORomers(MEASUREMENT);
            break;
        case 57:
            key.gate = ReaumursTOCelsius(MEASUREMENT);
            break;
        case 58:
            key.gate = ReaumursTOFahrenheits(MEASUREMENT);
            break;
        case 61:
            key.gate = RomersTODelisles(MEASUREMENT);
            break;
        case 62:
            key.gate = RomersTOKelvins(MEASUREMENT);
            break;
        case 63:
            key.gate = RomersTONewtons(MEASUREMENT);
            break;
        case 64:
            key.gate = RomersTORankines(MEASUREMENT);
            break;
        case 65:
            key.gate = RomersTOReaumurs(MEASUREMENT);
            break;
        case 67:
            key.gate = RomersTOCelsius(MEASUREMENT);
            break;
        case 68:
            key.gate = RomersTOFahrenheits(MEASUREMENT);
            break;
        case 71:
            key.gate = CelsiusTODelisles(MEASUREMENT);
            break;
        case 72:
            key.gate = CelsiusTOKelvins(MEASUREMENT);
            break;
        case 73:
            key.gate = CelsiusTONewtons(MEASUREMENT);
            break;
        case 74:
            key.gate = CelsiusTORankines(MEASUREMENT);
            break;
        case 75:
            key.gate = CelsiusTOReaumurs(MEASUREMENT);
            break;
        case 76:
            key.gate = CelsiusTORomers(MEASUREMENT);
            break;
        case 78:
            key.gate = CelsiusTOFahrenheits(MEASUREMENT);
            break;
        case 81:
            key.gate = FahrenheitsTODelisles(MEASUREMENT);
            break;
        case 82:
            key.gate = FahrenheitsTOKelvins(MEASUREMENT);
            break;
        case 83:
            key.gate = FahrenheitsTONewtons(MEASUREMENT);
            break;
        case 84:
            key.gate = FahrenheitsTORankines(MEASUREMENT);
            break;
        case 85:
            key.gate = FahrenheitsTOReaumurs(MEASUREMENT);
            break;
        case 86:
            key.gate = FahrenheitsTORomers(MEASUREMENT);
            break;
        case 87:
            key.gate = FahrenheitsTOCelsius(MEASUREMENT);
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
double selectionswitchAmpere(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Ампер;\n"
           "2 - Килоампер;\n"
           "3 - Миллиампер;\n"
           "4 - Микроампер;\n"
           "5 - Наноампер;\n");
    key.input_choice = parsing_id(key.in);
    //scanf("%d", &key.input_choice);
    while(key.input_choice >= 8 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%d", &key.input_choice);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           "1 - Ампер;\n"
           "2 - Килоампер;\n"
           "3 - Миллиапмер;\n"
           "4 - Микроампер;\n"
           "5 - Наноампер;\n");
    key.output_choice = parsing_id(key.out);
    //scanf("%d", &key.output_choice);
    while(key.output_choice == key.input_choice || key.input_choice >= 8 || key.input_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%d", &key.output_choice);
    }

    key.id = key.input_choice * 10 + key.output_choice;
    switch(key.id) {
        case 12:
       	    key.gate = Ampere2kAmpere(MEASUREMENT);
            break;
        case 13:
            key.gate = Ampere2mAmpere(MEASUREMENT);
            break;
        case 14:
            key.gate = Ampere2mcAmpere(MEASUREMENT);
            break;
        case 15:
            key.gate = Ampere2nAmpere(MEASUREMENT);
            break;
        case 21:
            key.gate = kAmpere2Ampere(MEASUREMENT);
            break;
        case 23:
            key.gate = Ampere2mAmpere(kAmpere2Ampere(MEASUREMENT));
            break;
        case 24:
            key.gate = Ampere2mcAmpere(kAmpere2Ampere(MEASUREMENT));
            break;
        case 25:
            key.gate = Ampere2nAmpere(kAmpere2Ampere(MEASUREMENT));
            break;
        case 31:
            key.gate = mAmpere2Ampere(MEASUREMENT);
            break;
        case 32:
            key.gate = Ampere2kAmpere(mAmpere2Ampere(MEASUREMENT));
            break;
        case 34:
            key.gate = Ampere2mcAmpere(mAmpere2Ampere(MEASUREMENT));
            break;
        case 35:
            key.gate = Ampere2nAmpere(mAmpere2Ampere(MEASUREMENT));
            break;
        case 41:
            key.gate = mcAmpere2Ampere(MEASUREMENT);
            break;
        case 42:
            key.gate = Ampere2kAmpere(mcAmpere2Ampere(MEASUREMENT));
            break;
        case 43:
            key.gate = Ampere2mAmpere(mcAmpere2Ampere(MEASUREMENT));
            break;
        case 45:
            key.gate = Ampere2nAmpere(mcAmpere2Ampere(MEASUREMENT));
            break;
        case 51:
            key.gate = nAmpere2Ampere(MEASUREMENT);
            break;
        case 52:
            key.gate = Ampere2kAmpere(nAmpere2Ampere(MEASUREMENT));
            break;
        case 53:
            key.gate = Ampere2mAmpere(nAmpere2Ampere(MEASUREMENT));
            break;
        case 54:
            key.gate = Ampere2mcAmpere(nAmpere2Ampere(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }
	
    return key.gate;
}
double selectionswitchStrength(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Ньютоны;\n"
           "2 - Килоньютоны;\n"
           "3 - Миллиньютоны;\n"
           "4 - Меганьютоны;\n"
           "5 - Микроньютоны;\n"
           "6 - Килограмм-силы;\n"
           "7 - Фунт-силы;\n\t");
    key.input_choice = parsing_id(key.in);
    while(key.input_choice >= 8 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           "1 - Ньютоны;\n"
           "2 - Килоньютоны;\n"
           "3 - Миллиньютоны;\n"
           "4 - Меганьютоны;\n"
           "5 - Микроньютоны;\n"
           "6 - Килограмм-силы;\n"
           "7 - Фунт-силы;\n\t");
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.input_choice >= 8 || key.input_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        key.output_choice = parsing_id(key.out);
    }
	key.id = key.input_choice * 10 + key.output_choice;

    switch(key.id) {
        case 12:
            key.gate = Newton2kNewton(MEASUREMENT);
            break;
        case 13:
            key.gate = Newton2mNewton(MEASUREMENT);
            break;
        case 14:
            key.gate = Newton2MgNewton(MEASUREMENT);
            break;
        case 15:
            key.gate = Newton2MkNewton(MEASUREMENT);
            break;
        case 16:
            key.gate = Newton2kgsNewton(MEASUREMENT);
            break;
        case 17:
            key.gate = Newton2fsNewton(MEASUREMENT);
            break;
        case 21:
            key.gate = kNewton2Newton(MEASUREMENT);
            break;
        case 23:
            key.gate = Newton2mNewton(kNewton2Newton(MEASUREMENT));
            break;
        case 24:
            key.gate = Newton2MgNewton(kNewton2Newton(MEASUREMENT));
            break;
        case 25:
            key.gate = Newton2MkNewton(kNewton2Newton(MEASUREMENT));
            break;
        case 26:
            key.gate = Newton2kgsNewton(kNewton2Newton(MEASUREMENT));
            break;
        case 27:
            key.gate = Newton2fsNewton(kNewton2Newton(MEASUREMENT));
            break;
        case 31:
            key.gate = mNewton2Newton(MEASUREMENT);
            break;
        case 32:
            key.gate = Newton2kNewton(mNewton2Newton(MEASUREMENT));
            break;
        case 34:
            key.gate = Newton2MgNewton(mNewton2Newton(MEASUREMENT));
            break;
        case 35:
            key.gate = Newton2MkNewton(mNewton2Newton(MEASUREMENT));
            break;
        case 36:
            key.gate = Newton2kgsNewton(mNewton2Newton(MEASUREMENT));
            break;
        case 37:
            key.gate = Newton2fsNewton(mNewton2Newton(MEASUREMENT));
            break;
        case 41:
            key.gate = MgNewton2Newton(MEASUREMENT);
            break;
        case 42:
            key.gate = Newton2kNewton(MgNewton2Newton(MEASUREMENT));
            break;
        case 43:
            key.gate = Newton2mNewton(MgNewton2Newton(MEASUREMENT));
            break;
        case 45:
            key.gate = Newton2MkNewton(MgNewton2Newton(MEASUREMENT));
            break;
        case 46:
            key.gate = Newton2kgsNewton(MgNewton2Newton(MEASUREMENT));
            break;
        case 47:
            key.gate = Newton2fsNewton(MgNewton2Newton(MEASUREMENT));
            break;
        case 51:
            key.gate = MkNewton2Newton(MEASUREMENT);
            break;
        case 52:
            key.gate = Newton2kNewton(MkNewton2Newton(MEASUREMENT));
            break;
        case 53:
            key.gate = Newton2mNewton(MkNewton2Newton(MEASUREMENT));
            break;
        case 54:
            key.gate = Newton2MgNewton(MkNewton2Newton(MEASUREMENT));
            break;
        case 56:
            key.gate = Newton2kgsNewton(MkNewton2Newton(MEASUREMENT));
            break;
        case 57:
            key.gate = Newton2fsNewton(MkNewton2Newton(MEASUREMENT));
            break;
        case 61:
            key.gate = kgsNewton2Newton(MEASUREMENT);
            break;
        case 62:
            key.gate = Newton2kNewton(kgsNewton2Newton(MEASUREMENT));
            break;
        case 63:
            key.gate = Newton2mNewton(kgsNewton2Newton(MEASUREMENT));
            break;
        case 64:
            key.gate = Newton2MgNewton(kgsNewton2Newton(MEASUREMENT));
            break;
        case 65:
            key.gate = Newton2MkNewton(kgsNewton2Newton(MEASUREMENT));
            break;
        case 67:
            key.gate = Newton2fsNewton(kgsNewton2Newton(MEASUREMENT));
            break;
        case 71:
            key.gate = fsNewton2Newton(MEASUREMENT);
            break;
        case 72:
            key.gate = Newton2kNewton(fsNewton2Newton(MEASUREMENT));
            break;
        case 73:
            key.gate = Newton2mNewton(fsNewton2Newton(MEASUREMENT));
            break;
        case 74:
            key.gate = Newton2MgNewton(fsNewton2Newton(MEASUREMENT));
            break;
        case 75:
            key.gate = Newton2MkNewton(fsNewton2Newton(MEASUREMENT));
            break;
        case 76:
            key.gate = Newton2kgsNewton(fsNewton2Newton(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
double selectionswitchAmount(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Кубический километр;\n"
           "2 - Кубический метр;\n"
           "3 - Кубический дециметр;\n"
           "4 - Кубический сантиметр;\n"
           "5 - Кубический миллиметр;\n"
           "6 - Литр;\n"
           "7 - Миллилитр;\n"
           "8 - Галлон;\n"
           "9 - Баррель;\n"
           "10 - Кварта;\n"
           "11 - Пинта;\n"
           "12 - Жидкая унция;\n\t");
    //scanf("%d", &key.input_choice);
    scanf("%s", key.in);
    key.input_choice = parsing_id(key.in);
    while(key.input_choice > 12 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.in);
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           "1 - Кубический километр;\n"
           "2 - Кубический метр;\n"
           "3 - Кубический дециметр;\n"
           "4 - Кубический сантиметр;\n"
           "5 - Кубический миллиметр;\n"
           "6 - Литр;\n"
           "7 - Миллилитр;\n"
           "8 - Галлон;\n"
           "9 - Баррель;\n"
           "10 - Кварта;\n "
           "11 - Пинта;\n"
           "12 - Жидкая унция;\n\t");
    //scanf("%d", &key.output_choice);
    scanf("%s", key.out);
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.output_choice > 12 || key.output_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.out);
        key.output_choice = parsing_id(key.out);
    }

    if(key.input_choice < 10 && key.output_choice < 10)
		key.id = key.input_choice * 10 + key.output_choice;
	if(key.input_choice == 10 && key.output_choice <= 10)
		key.id = key.input_choice * 100 + key.output_choice;
	if(key.input_choice < 10 && key.output_choice == 10)
		key.id = key.input_choice * 100 + key.output_choice;

    switch(key.id) {
        // Кубический километр
        case 12:
            key.gate = squaredkilometers_TO_squaredmeters(MEASUREMENT);
            break;
        case 13:
            key.gate = squaredmeters_TO_squareddecimeters(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 14:
            key.gate = squaredmeters_TO_squaredcentimeters(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 15:
            key.gate = squaredmeters_TO_squaredmillimeters(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 16:
            key.gate = squaredmeters_TO_liters(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 17:
            key.gate = squaredmeters_TO_mililiters(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 18:
            key.gate = squaredmeters_TO_gallons(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 19:
            key.gate = squaredmeters_TO_barrels(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 110:
            key.gate = squaredmeters_TO_quarts(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 111:
            key.gate = squaredmeters_TO_pints(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        case 112:
            key.gate = squaredmeters_TO_flozs(squaredkilometers_TO_squaredmeters(MEASUREMENT));
            break;
        // Кубический метр
        case 21:
            key.gate = squaredmeters_TO_squaredkilometers(MEASUREMENT);
            break;
        case 23:
            key.gate = squaredmeters_TO_squareddecimeters(MEASUREMENT);
            break;
        case 24:
            key.gate = squaredmeters_TO_squaredcentimeters(MEASUREMENT);
            break;
        case 25:
            key.gate = squaredmeters_TO_squaredmillimeters(MEASUREMENT);
            break;
        case 26:
            key.gate = squaredmeters_TO_liters(MEASUREMENT);
            break;
        case 27:
            key.gate = squaredmeters_TO_mililiters(MEASUREMENT);
            break;
        case 28:
            key.gate = squaredmeters_TO_gallons(MEASUREMENT);
            break;
        case 29:
            key.gate = squaredmeters_TO_barrels(MEASUREMENT);
            break;
        case 210:
            key.gate = squaredmeters_TO_quarts(MEASUREMENT);
            break;
        case 211:
            key.gate = squaredmeters_TO_pints(MEASUREMENT);
            break;
        case 212:
            key.gate = squaredmeters_TO_flozs(MEASUREMENT);
            break;
        // Кубический дециметр
        case 32:
            key.gate = squareddecimeters_TO_squaredmeters(MEASUREMENT);
            break;
        case 31:
            key.gate = squaredmeters_TO_squaredkilometers(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 34:
            key.gate = squaredmeters_TO_squaredcentimeters(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 35:
            key.gate = squaredmeters_TO_squaredmillimeters(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 36:
            key.gate = squaredmeters_TO_liters(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 37:
            key.gate = squaredmeters_TO_mililiters(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 38:
            key.gate = squaredmeters_TO_gallons(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 39:
            key.gate = squaredmeters_TO_barrels(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 310:
            key.gate = squaredmeters_TO_quarts(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 311:
            key.gate = squaredmeters_TO_pints(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 312:
            key.gate = squaredmeters_TO_flozs(squareddecimeters_TO_squaredmeters(MEASUREMENT));
            break;
         // Кубический сантиметр
        case 43:
            key.gate = squaredmeters_TO_squareddecimeters(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 42:
            key.gate = squaredcentimeters_TO_squaredmeters(MEASUREMENT);
            break;
        case 41:
            key.gate = squaredmeters_TO_squaredkilometers(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 45:
            key.gate = squaredmeters_TO_squaredmillimeters(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 46:
            key.gate = squaredmeters_TO_liters(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 47:
            key.gate = squaredmeters_TO_mililiters(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 48:
            key.gate = squaredmeters_TO_gallons(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 49:
            key.gate = squaredmeters_TO_barrels(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 410:
            key.gate = squaredmeters_TO_quarts(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 411:
            key.gate = squaredmeters_TO_pints(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 412:
            key.gate = squaredmeters_TO_flozs(squaredcentimeters_TO_squaredmeters(MEASUREMENT));
            break;
         // Кубический миллиметр
        case 54:
            key.gate = squaredmeters_TO_squaredcentimeters(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 53:
            key.gate = squaredmeters_TO_squareddecimeters(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 52:
            key.gate = squaredmillimeters_TO_squaredmeters(MEASUREMENT);
            break;
        case 51:
            key.gate = squaredmeters_TO_squaredkilometers(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 56:
            key.gate = squaredmeters_TO_liters(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 57:
            key.gate = squaredmeters_TO_mililiters(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 58:
            key.gate = squaredmeters_TO_gallons(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 59:
            key.gate = squaredmeters_TO_barrels(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 510:
            key.gate = squaredmeters_TO_quarts(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 511:
            key.gate = squaredmeters_TO_pints(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
        case 512:
            key.gate = squaredmeters_TO_flozs(squaredmillimeters_TO_squaredmeters(MEASUREMENT));
            break;
         // Литр
        case 65:
            key.gate = squaredmeters_TO_squaredmillimeters(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 64:
            key.gate = squaredmeters_TO_squaredcentimeters(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 63:
            key.gate = squaredmeters_TO_squareddecimeters(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 62:
            key.gate = liters_TO_squaredmeters(MEASUREMENT);
            break;
        case 61:
            key.gate = squaredmeters_TO_squaredkilometers(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 67:
            key.gate = squaredmeters_TO_mililiters(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 68:
            key.gate = squaredmeters_TO_gallons(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 69:
            key.gate = squaredmeters_TO_barrels(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 610:
            key.gate = squaredmeters_TO_quarts(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 611:
            key.gate = squaredmeters_TO_pints(liters_TO_squaredmeters(MEASUREMENT));
            break;
        case 612:
            key.gate = squaredmeters_TO_flozs(liters_TO_squaredmeters(MEASUREMENT));
            break;
         // Миллилитр
        case 76:
            key.gate = squaredmeters_TO_liters(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 75:
            key.gate = squaredmeters_TO_squaredmillimeters(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 74:
            key.gate = squaredmeters_TO_squaredcentimeters(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 73:
            key.gate = squaredmeters_TO_squareddecimeters(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 72:
            key.gate = mililiters_TO_squaredmeters(MEASUREMENT);
            break;
        case 71:
            key.gate = squaredmeters_TO_squaredkilometers(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 78:
            key.gate = squaredmeters_TO_gallons(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 79:
            key.gate = squaredmeters_TO_barrels(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 710:
            key.gate = squaredmeters_TO_quarts(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 711:
            key.gate = squaredmeters_TO_pints(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        case 712:
            key.gate = squaredmeters_TO_flozs(mililiters_TO_squaredmeters(MEASUREMENT));
            break;
        // Галлон
        case 87:
            key.gate = squaredmeters_TO_mililiters(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 86:
            key.gate = squaredmeters_TO_liters(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 85:
            key.gate = squaredmeters_TO_squaredmillimeters(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 84:
            key.gate = squaredmeters_TO_squaredcentimeters(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 83:
            key.gate = squaredmeters_TO_squareddecimeters(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 82:
            key.gate = gallons_TO_squaredmeters(MEASUREMENT);
            break;
        case 81:
            key.gate = squaredmeters_TO_squaredkilometers(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 89:
            key.gate = squaredmeters_TO_barrels(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 810:
            key.gate = squaredmeters_TO_quarts(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 811:
            key.gate = squaredmeters_TO_pints(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        case 812:
            key.gate = squaredmeters_TO_flozs(gallons_TO_squaredmeters(MEASUREMENT));
            break;
        //Баррель
        case 98:
            key.gate = squaredmeters_TO_gallons(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 97:
            key.gate = squaredmeters_TO_mililiters(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 96:
            key.gate = squaredmeters_TO_liters(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 95:
            key.gate = squaredmeters_TO_squaredmillimeters(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 94:
            key.gate = squaredmeters_TO_squaredcentimeters(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 93:
            key.gate = squaredmeters_TO_squareddecimeters(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 92:
            key.gate = barrels_TO_squaredmeters(MEASUREMENT);
            break;
        case 91:
            key.gate = squaredmeters_TO_squaredkilometers(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 910:
            key.gate = squaredmeters_TO_quarts(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 911:
            key.gate = squaredmeters_TO_pints(barrels_TO_squaredmeters(MEASUREMENT));
            break;
        case 912:
            key.gate = squaredmeters_TO_flozs(barrels_TO_squaredmeters(MEASUREMENT));
            break;
         // Êâàðòà
        case 1009:
            key.gate = squaredmeters_TO_barrels(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1008:
            key.gate = squaredmeters_TO_gallons(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1007:
            key.gate = squaredmeters_TO_mililiters(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1006:
            key.gate = squaredmeters_TO_liters(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1005:
            key.gate = squaredmeters_TO_squaredmillimeters(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1004:
            key.gate = squaredmeters_TO_squaredcentimeters(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1003:
            key.gate = squaredmeters_TO_squareddecimeters(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1002:
            key.gate = quarts_TO_squaredmeters(MEASUREMENT);
            break;
        case 1001:
            key.gate = squaredmeters_TO_squaredkilometers(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1011:
            key.gate = squaredmeters_TO_pints(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        case 1012:
            key.gate = squaredmeters_TO_flozs(quarts_TO_squaredmeters(MEASUREMENT));
            break;
        // Пинта
        case 1110:
            key.gate = squaredmeters_TO_quarts(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1109:
            key.gate = squaredmeters_TO_barrels(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1108:
            key.gate = squaredmeters_TO_gallons(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1107:
            key.gate = squaredmeters_TO_mililiters(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1106:
            key.gate = squaredmeters_TO_liters(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1105:
            key.gate = squaredmeters_TO_squaredmillimeters(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1104:
            key.gate = squaredmeters_TO_squaredcentimeters(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1103:
            key.gate = squaredmeters_TO_squareddecimeters(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1102:
            key.gate = pints_TO_squaredmeters(MEASUREMENT);
            break;
        case 1101:
            key.gate = squaredmeters_TO_squaredkilometers(pints_TO_squaredmeters(MEASUREMENT));
            break;
        case 1112:
            key.gate = squaredmeters_TO_flozs(pints_TO_squaredmeters(MEASUREMENT));
            break;
         // Жидкая унция
        case 1211:
            key.gate = squaredmeters_TO_pints(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1210:
            key.gate = squaredmeters_TO_quarts(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1209:
            key.gate = squaredmeters_TO_barrels(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1208:
            key.gate = squaredmeters_TO_gallons(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1207:
            key.gate = squaredmeters_TO_mililiters(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1206:
            key.gate = squaredmeters_TO_liters(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1205:
            key.gate = squaredmeters_TO_squaredmillimeters(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1204:
            key.gate = squaredmeters_TO_squaredcentimeters(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1203:
            key.gate = squaredmeters_TO_squareddecimeters(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        case 1202:
            key.gate = flozs_TO_squaredmeters(MEASUREMENT);
            break;
        case 1201:
            key.gate = squaredmeters_TO_squaredkilometers(flozs_TO_squaredmeters(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
double selectionswitchMass(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Граммы;\n"
           "2 - Килограммы;\n"
           "3 - Центнеры;\n"
           "4 - Тонны;\n"
           "5 - Караты;\n"
           "6 - Стоуны;\n"
           "7 - Фунты;\n"
           "8 - Унции;\n"
           "9 - Драхмы;\n"
           "10 - Граны;\n \t");
    key.input_choice = parsing_id(key.in);
    while(key.input_choice > 10 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           "1 - Граммы;\n"
           "2 - Килограммы;\n"
           "3 - Центнеры;\n"
           "4 - Тонны;\n"
           "5 - Караты;\n"
           "6 - Стоуны;\n"
           "7 - Фунты;\n"
           "8 - Унции;\n"
           "9 - Драхмы;\n"
           "10 - Граны;\n \t");
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.output_choice > 10 || key.output_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        key.output_choice = parsing_id(key.out);
    }

    if(key.input_choice < 10 && key.output_choice < 10)
		key.id = key.input_choice * 10 + key.output_choice;
	if(key.input_choice == 10 && key.output_choice <= 10)
		key.id = key.input_choice * 100 + key.output_choice;
	if(key.input_choice < 10 && key.output_choice == 10)
		key.id = key.input_choice * 100 + key.output_choice;


	switch(key.id) {
    //Грамм
        case 12:
            key.gate = Grams_TO_Kilograms(MEASUREMENT);
            break;
        case 13:
            key.gate = Kilograms_TO_Quintals(Grams_TO_Kilograms(MEASUREMENT));
            break;
        case 14:
            key.gate = Kilograms_TO_Tonnes(Grams_TO_Kilograms(MEASUREMENT));
            break;
        case 15:
            key.gate = Kilograms_TO_Carats(Grams_TO_Kilograms(MEASUREMENT));
            break;
        case 16:
            key.gate = Kilograms_TO_Stones(Grams_TO_Kilograms(MEASUREMENT));
            break;
        case 17:
            key.gate = Kilograms_TO_Funts(Grams_TO_Kilograms(MEASUREMENT));
            break;
        case 18:
            key.gate = Kilograms_TO_Ounces(Grams_TO_Kilograms(MEASUREMENT));
            break;
        case 19:
            key.gate = Kilograms_TO_Drachmas(Grams_TO_Kilograms(MEASUREMENT));
            break;
        case 110:
            key.gate = Kilograms_TO_Grains(Grams_TO_Kilograms(MEASUREMENT));
            break;
        //Килограмм
        case 21:
            key.gate = Kilograms_TO_Grams(MEASUREMENT);
            break;
        case 23:
            key.gate = Kilograms_TO_Quintals(MEASUREMENT);
            break;
        case 24:
            key.gate = Kilograms_TO_Tonnes(MEASUREMENT);
            break;
        case 25:
            key.gate = Kilograms_TO_Carats(MEASUREMENT);
            break;
        case 26:
            key.gate = Kilograms_TO_Stones(MEASUREMENT);
            break;
        case 27:
            key.gate = Kilograms_TO_Funts(MEASUREMENT);
            break;
        case 28:
            key.gate = Kilograms_TO_Ounces(MEASUREMENT);
            break;
        case 29:
            key.gate = Kilograms_TO_Drachmas(MEASUREMENT);
            break;
        case 210:
            key.gate = Kilograms_TO_Grains(MEASUREMENT);
            break;
        //Центнер
        case 32:
            key.gate = Quintals_TO_Kilograms(MEASUREMENT);
            break;
        case 31:
            key.gate = Kilograms_TO_Grams(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        case 34:
            key.gate = Kilograms_TO_Tonnes(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        case 35:
            key.gate = Kilograms_TO_Carats(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        case 36:
            key.gate = Kilograms_TO_Stones(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        case 37:
            key.gate = Kilograms_TO_Funts(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        case 38:
            key.gate = Kilograms_TO_Ounces(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        case 39:
            key.gate = Kilograms_TO_Drachmas(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        case 310:
            key.gate = Kilograms_TO_Grains(Quintals_TO_Kilograms(MEASUREMENT));
            break;
        //Тонна
        case 43:
            key.gate = Kilograms_TO_Quintals(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        case 42:
            key.gate = Tonnes_TO_Kilograms(MEASUREMENT);
            break;
        case 41:
            key.gate = Kilograms_TO_Grams(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        case 45:
            key.gate = Kilograms_TO_Carats(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        case 46:
            key.gate = Kilograms_TO_Stones(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        case 47:
            key.gate = Kilograms_TO_Funts(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        case 48:
            key.gate = Kilograms_TO_Ounces(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        case 49:
            key.gate = Kilograms_TO_Drachmas(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        case 410:
            key.gate = Kilograms_TO_Grains(Tonnes_TO_Kilograms(MEASUREMENT));
            break;
        //Карат
        case 54:
            key.gate = Kilograms_TO_Tonnes(Carats_TO_Kilograms(MEASUREMENT));
            break;
        case 53:
            key.gate = Kilograms_TO_Quintals(Carats_TO_Kilograms(MEASUREMENT));
            break;
        case 52:
            key.gate = Carats_TO_Kilograms(MEASUREMENT);
            break;
        case 51:
            key.gate = Kilograms_TO_Grams(Carats_TO_Kilograms(MEASUREMENT));
            break;
        case 56:
            key.gate = Kilograms_TO_Stones(Carats_TO_Kilograms(MEASUREMENT));
            break;
        case 57:
            key.gate = Kilograms_TO_Funts(Carats_TO_Kilograms(MEASUREMENT));
            break;
        case 58:
            key.gate = Kilograms_TO_Ounces(Carats_TO_Kilograms(MEASUREMENT));
            break;
        case 59:
            key.gate = Kilograms_TO_Drachmas(Carats_TO_Kilograms(MEASUREMENT));
            break;
        case 510:
            key.gate = Kilograms_TO_Grains(Carats_TO_Kilograms(MEASUREMENT));
            break;
        //Стоун
        case 65:
            key.gate = Kilograms_TO_Carats(Stones_TO_Kilograms(MEASUREMENT));
            break;
        case 64:
            key.gate = Kilograms_TO_Tonnes(Stones_TO_Kilograms(MEASUREMENT));
            break;
        case 63:
            key.gate = Kilograms_TO_Quintals(Stones_TO_Kilograms(MEASUREMENT));
            break;
        case 62:
            key.gate = Stones_TO_Kilograms(MEASUREMENT);
            break;
        case 61:
            key.gate = Kilograms_TO_Grams(Stones_TO_Kilograms(MEASUREMENT));
            break;
        case 67:
            key.gate = Kilograms_TO_Funts(Stones_TO_Kilograms(MEASUREMENT));
            break;
        case 68:
            key.gate = Kilograms_TO_Ounces(Stones_TO_Kilograms(MEASUREMENT));
            break;
        case 69:
            key.gate = Kilograms_TO_Drachmas(Stones_TO_Kilograms(MEASUREMENT));
            break;
        case 610:
            key.gate = Kilograms_TO_Grains(Stones_TO_Kilograms(MEASUREMENT));
            break;
        //Фунт
        case 76:
            key.gate = Kilograms_TO_Stones(Funts_TO_Kilograms(MEASUREMENT));
            break;
        case 75:
            key.gate = Kilograms_TO_Carats(Funts_TO_Kilograms(MEASUREMENT));
            break;
        case 74:
            key.gate = Kilograms_TO_Tonnes(Funts_TO_Kilograms(MEASUREMENT));
            break;
        case 73:
            key.gate = Kilograms_TO_Quintals(Funts_TO_Kilograms(MEASUREMENT));
            break;
        case 72:
            key.gate = Funts_TO_Kilograms(MEASUREMENT);
            break;
        case 71:
            key.gate = Kilograms_TO_Grams(Funts_TO_Kilograms(MEASUREMENT));
            break;
        case 78:
            key.gate = Kilograms_TO_Ounces(Funts_TO_Kilograms(MEASUREMENT));
            break;
        case 79:
            key.gate = Kilograms_TO_Drachmas(Funts_TO_Kilograms(MEASUREMENT));
            break;
        case 710:
            key.gate = Kilograms_TO_Grains(Funts_TO_Kilograms(MEASUREMENT));
            break;
        //Унция
        case 87:
            key.gate = Kilograms_TO_Funts(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        case 86:
            key.gate = Kilograms_TO_Stones(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        case 85:
            key.gate = Kilograms_TO_Carats(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        case 84:
            key.gate = Kilograms_TO_Tonnes(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        case 83:
            key.gate = Kilograms_TO_Quintals(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        case 82:
            key.gate = Ounces_TO_Kilograms(MEASUREMENT);
            break;
        case 81:
            key.gate = Kilograms_TO_Grams(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        case 89:
            key.gate = Kilograms_TO_Drachmas(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        case 810:
            key.gate = Kilograms_TO_Grains(Ounces_TO_Kilograms(MEASUREMENT));
            break;
        //Драхма
        case 98:
            key.gate = Kilograms_TO_Ounces(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        case 97:
            key.gate = Kilograms_TO_Funts(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        case 96:
            key.gate = Kilograms_TO_Stones(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        case 95:
            key.gate = Kilograms_TO_Carats(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        case 94:
            key.gate = Kilograms_TO_Tonnes(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        case 93:
            key.gate = Kilograms_TO_Quintals(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        case 92:
            key.gate = Drachmas_TO_Kilograms(MEASUREMENT);
            break;
        case 91:
            key.gate = Kilograms_TO_Grams(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        case 910:
            key.gate = Kilograms_TO_Grains(Drachmas_TO_Kilograms(MEASUREMENT));
            break;
        //Гран
        case 1009:
            key.gate = Kilograms_TO_Drachmas(Grains_TO_Kilograms(MEASUREMENT));
            break;
        case 1008:
            key.gate = Kilograms_TO_Ounces(Grains_TO_Kilograms(MEASUREMENT));
            break;
        case 1007:
            key.gate = Kilograms_TO_Funts(Grains_TO_Kilograms(MEASUREMENT));
            break;
        case 1006:
            key.gate = Kilograms_TO_Stones(Grains_TO_Kilograms(MEASUREMENT));
            break;
        case 1005:
            key.gate = Kilograms_TO_Carats(Grains_TO_Kilograms(MEASUREMENT));
            break;
        case 1004:
            key.gate = Kilograms_TO_Tonnes(Grains_TO_Kilograms(MEASUREMENT));
            break;
        case 1003:
            key.gate = Kilograms_TO_Quintals(Grains_TO_Kilograms(MEASUREMENT));
            break;
        case 1002:
            key.gate = Grains_TO_Kilograms(MEASUREMENT);
            break;
        case 1001:
            key.gate = Kilograms_TO_Grams(Grains_TO_Kilograms(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
double selectionswitchArea(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Квадратные метры;\n"
           "2 - Гектары;\n"
           "3 - Ары;\n"
           "4 - Квадратные километры;\n"
           "5 - Акры;\n"
	   "6 - Квадратный сантиметр;\n"
           "7 - Квадратный дюйм;\n"
           "8 - Квадратный миллиметр;\n\t");
    scanf("%s", key.in);
    key.input_choice = parsing_id(key.in);
    while(key.input_choice > 8 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.in);
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           "1 - Квадратные метры;\n"
           "2 - Гектары;\n"
           "3 - Ары;\n"
           "4 - Квадратные километры;\n"
           "5 - Акры;\n"
	   "6 - Квадратный сантиметр;\n"
           "7 - Квадратный дюйм;\n"
           "8 - Квадратный миллиметр;\n\t");
    scanf("%s", key.out);
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.output_choice > 8 || key.output_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.out);
        key.output_choice = parsing_id(key.out);
    }

    key.id = key.input_choice * 10 + key.output_choice;
    switch(key.id) {
        case 12:
        	key.gate = SquareMeter2Hectare(MEASUREMENT);
            break;
        case 13:
            key.gate = SquareMeter2Ar(MEASUREMENT);
            break;
        case 14:
            key.gate = SquareMeter2SquarekMeter(MEASUREMENT);
            break;
        case 15:
            key.gate = SquareMeter2Acr(MEASUREMENT);
            break;
        case 16:
            key.gate = SquareMeter2SquaresMeter(MEASUREMENT);
            break;
        case 17:
            key.gate = SquareMeter2SquareInch(MEASUREMENT);
            break;
        case 18:
            key.gate = SquareMeter2SquaremMeter(MEASUREMENT);
            break;
        case 21:
            key.gate = Hectare2SquareMeter(MEASUREMENT);
            break;
        case 23:
            key.gate = SquareMeter2Ar(Hectare2SquareMeter(MEASUREMENT));
            break;
        case 24:
            key.gate = SquareMeter2SquarekMeter(Hectare2SquareMeter(MEASUREMENT));
            break;
        case 25:
            key.gate = SquareMeter2Acr(Hectare2SquareMeter(MEASUREMENT));
            break;
        case 26:
            key.gate = SquareMeter2SquaresMeter(Hectare2SquareMeter(MEASUREMENT));
            break;
        case 27:
            key.gate = SquareMeter2SquareInch(Hectare2SquareMeter(MEASUREMENT));
            break;
        case 28:
            key.gate = SquareMeter2SquaremMeter(Hectare2SquareMeter(MEASUREMENT));
            break;
        case 31:
            key.gate = Ar2SquareMeter(MEASUREMENT);
            break;
        case 32:
            key.gate = SquareMeter2Hectare(Ar2SquareMeter(MEASUREMENT));
            break;
        case 34:
            key.gate = SquareMeter2SquarekMeter(Ar2SquareMeter(MEASUREMENT));
            break;
        case 35:
            key.gate = SquareMeter2Acr(Ar2SquareMeter(MEASUREMENT));
            break;
        case 36:
            key.gate = SquareMeter2SquaresMeter(Ar2SquareMeter(MEASUREMENT));
            break;
        case 37:
            key.gate = SquareMeter2SquareInch(Ar2SquareMeter(MEASUREMENT));
            break;
        case 38:
            key.gate = SquareMeter2SquaremMeter(Ar2SquareMeter(MEASUREMENT));
            break;
        case 41:
            key.gate = SquarekMeter2SquareMeter(MEASUREMENT);
            break;
        case 42:
            key.gate = SquareMeter2Hectare(SquarekMeter2SquareMeter(MEASUREMENT));
            break;
        case 43:
            key.gate = SquareMeter2Ar(SquarekMeter2SquareMeter(MEASUREMENT));
            break;
        case 45:
            key.gate = SquareMeter2Acr(SquarekMeter2SquareMeter(MEASUREMENT));
            break;
        case 46:
            key.gate = SquareMeter2SquaresMeter(SquarekMeter2SquareMeter(MEASUREMENT));
            break;
        case 47:
            key.gate = SquareMeter2SquareInch(SquarekMeter2SquareMeter(MEASUREMENT));
            break;
        case 48:
            key.gate = SquareMeter2SquaremMeter(SquarekMeter2SquareMeter(MEASUREMENT));
            break;
        case 51:
            key.gate = Acr2SquareMeter(MEASUREMENT);
            break;
        case 52:
            key.gate = SquareMeter2Hectare(Acr2SquareMeter(MEASUREMENT));
            break;
        case 53:
            key.gate = SquareMeter2Ar(Acr2SquareMeter(MEASUREMENT));
            break;
        case 54:
            key.gate = SquareMeter2SquarekMeter(Acr2SquareMeter(MEASUREMENT));
            break;
        case 56:
            key.gate = SquareMeter2SquaresMeter(Acr2SquareMeter(MEASUREMENT));
            break;
        case 57:
            key.gate = SquareMeter2SquareInch(Acr2SquareMeter(MEASUREMENT));
            break;
        case 58:
            key.gate = SquareMeter2SquaremMeter(Acr2SquareMeter(MEASUREMENT));
            break;
        case 61:
            key.gate = SquaresMeter2SquareMeter(MEASUREMENT);
            break;
        case 62:
            key.gate = SquareMeter2Hectare(SquaresMeter2SquareMeter(MEASUREMENT));
            break;
        case 63:
            key.gate = SquareMeter2Ar(SquaresMeter2SquareMeter(MEASUREMENT));
            break;
        case 64:
            key.gate = SquareMeter2SquarekMeter(SquaresMeter2SquareMeter(MEASUREMENT));
            break;
        case 65:
            key.gate = SquareMeter2Acr(SquaresMeter2SquareMeter(MEASUREMENT));
            break;
        case 67:
            key.gate = SquareMeter2SquareInch(SquaresMeter2SquareMeter(MEASUREMENT));
            break;
        case 68:
            key.gate = SquareMeter2SquaremMeter(SquaresMeter2SquareMeter(MEASUREMENT));
            break;
        case 71:
            key.gate = SquareInch2SquareMeter(MEASUREMENT);
            break;
        case 72:
            key.gate = SquareMeter2Hectare(SquareInch2SquareMeter(MEASUREMENT));
            break;
        case 73:
            key.gate = SquareMeter2Ar(SquareInch2SquareMeter(MEASUREMENT));
            break;
        case 74:
            key.gate = SquareMeter2SquarekMeter(SquareInch2SquareMeter(MEASUREMENT));
            break;
        case 75:
            key.gate = SquareMeter2Acr(SquareInch2SquareMeter(MEASUREMENT));
            break;
        case 76:
            key.gate = SquareMeter2SquaresMeter(SquareInch2SquareMeter(MEASUREMENT));
            break;
        case 78:
            key.gate = SquareMeter2SquaremMeter(SquareInch2SquareMeter(MEASUREMENT));
            break;
        case 81:
            key.gate = SquaremMeter2SquareMeter(MEASUREMENT);
            break;
        case 82:
            key.gate = SquareMeter2Hectare(SquaremMeter2SquareMeter(MEASUREMENT));
            break;
        case 83:
            key.gate = SquareMeter2Ar(SquaremMeter2SquareMeter(MEASUREMENT));
            break;
        case 84:
            key.gate = SquareMeter2SquarekMeter(SquaremMeter2SquareMeter(MEASUREMENT));
            break;
        case 85:
            key.gate = SquareMeter2Acr(SquaremMeter2SquareMeter(MEASUREMENT));
            break;
        case 86:
            key.gate = SquareMeter2SquaresMeter(SquaremMeter2SquareMeter(MEASUREMENT));
            break;
        case 87:
            key.gate = SquareMeter2SquareInch(SquaremMeter2SquareMeter(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
Ejemplo n.º 8
0
int main()
{
    setlocale(LC_ALL, "Russian");

    MainParameters head;
    head.version = 1.72;
    head.like_to_continue = 'y';

    printf("Unit Converter. Версия %.2f \n\n", head.version);

    while(head.like_to_continue == 'y') {
        printf("Выберите, с величиной какого рода Вы хотели бы работать: \n"
               "1 - Время;\t\t\t11 - Плотность; \n"
               "2 - Давление;\t\t\t12 - Радиоактивность; \n"
               "3 - Данные;\t\t\t13 - Сила; \n"
               "4 - Длина;\t\t\t14 - Сила тока; \n"
               "5 - Заряд;\t\t\t15 - Скорость; \n"
               "6 - Количество вещества;\t16 - Сопротивление; \n"
               "7 - Масса;\t\t\t17 - Температура; \n"
               "8 - Мощность;\t\t\t18 - Угол; \n"
               "9 - Объём;\t\t\t19 - Частота; \n"
               "10 - Площадь;\t\t\t20 - Энергия; \n\t");
        scanf("%s", head.measurement_id);
		int f = parsing_id(head.measurement_id);
        while(f >= 21 || f <= 0) {
            printf("\nРод величины вами не выбран. Сделайте корректный выбор: \n\t");
            scanf("%s", head.measurement_id);
            f = parsing_id(head.measurement_id);
        }

        switch(f) {
            case 1:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchTime(head.VOLUME);
                break;
            case 2:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchPression(head.VOLUME);
                break;
            case 3:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchData(head.VOLUME);
                break;
            case 4:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchLength(head.VOLUME);
                break;
            case 5:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchElectric_charge(head.VOLUME);
                break;
            case 6:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchQuantityOfSubstance(head.VOLUME);
                break;
            case 7:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchMass(head.VOLUME);
                break;
            case 8:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchPower(head.VOLUME);
                break;
            case 9:
				printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchAmount(head.VOLUME);
                break;
            case 10:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchArea(head.VOLUME);
                break;
            case 11:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchDensity(head.VOLUME);
                break;
            case 12:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchRadiation(head.VOLUME);
                break;
            case 13:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchStrength(head.VOLUME);
                break;
            case 14:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchAmpere(head.VOLUME);
                break;
            case 15:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchSpeed(head.VOLUME);
                break;
            case 16:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchResistance(head.VOLUME);
                break;
            case 17:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchTemperature(head.VOLUME);
                break;
            case 18:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchAngle(head.VOLUME);
                break;
            case 19:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchFrequency(head.VOLUME);
                break;
            case 20:
                printf("Введите число, которое Вы хотели были перевести. \n"
                       "В качестве знака-разделителя для вещественных чисел используйте символ '.'.\n\t");
                scanf("%s", head.MEASUREMENT);
                head.VOLUME = parsing(head.MEASUREMENT);
                while(head.VOLUME  == -1.111){
					fprintf(stderr, "Вы ввели не коректные данные.\n\t");
					scanf("%s", head.MEASUREMENT);
					head.VOLUME = parsing(head.MEASUREMENT);
				}
                head.result = selectionswitchEnergy(head.VOLUME);
                break;
            default:
                fprintf(stderr, "Вы пытаетесь выбрать род величины, которого не существует. Программа будет завершена;");
                break;
        }
		//printf("result =%lf \n", head.result);
        convert(head.result);

        printf("Вам нравится?\n");
        printf("Если хотите продолжить введите 'y', для выхода введите 'q'\n\t");
        scanf("%s", &head.like_to_continue);
        if(head.like_to_continue == 'q'){
			exit(EXIT_SUCCESS);
		}
        printf("\n");
    }

    //system("pause");
    system ("read -p \"Press any key to continue ...\" -n 1"); 
    exit(EXIT_SUCCESS);
}
double selectionswitchAngle(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Секунды;\n"
           "2 - Минуты;\n"
           "3 - Градусы;\n"
           "4 - Радианы;\n"
           "5 - Грады;\n"
           "6 - Секстанты;\n"
           "7 - Румбы;\n\t");
    key.input_choice = parsing_id(key.in);
    while(key.input_choice >= 8 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           "1 - Секунды;\n"
           "2 - Минуты;\n"
           "3 - Градусы\n"
           "4 - Радианы;\n"
           "5 - Грады;\n"
           "6 - Секстанты;\n"
           "7 - Румбы;\n\t");
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.output_choice >= 8 || key.output_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        key.output_choice = parsing_id(key.out);
    }

    key.id = key.input_choice * 10 + key.output_choice;
    switch(key.id) {
        case 12:
        	key.gate = Degree2Min(Sec2Degree(MEASUREMENT));
            break;
        case 13:
            key.gate = Sec2Degree(MEASUREMENT);
            break;
        case 14:
            key.gate = Degree2Radian(Sec2Degree(MEASUREMENT));
            break;
        case 15:
            key.gate = Degree2Grad(Sec2Degree(MEASUREMENT));
            break;
        case 16:
            key.gate = Degree2Sextant(Sec2Degree(MEASUREMENT));
            break;
        case 17:
            key.gate = Degree2Rumb(Sec2Degree(MEASUREMENT));
            break;
        case 21:
            key.gate = Degree2Sec(Min2Degree(MEASUREMENT));
            break;
        case 23:
            key.gate = Min2Degree(MEASUREMENT);
            break;
        case 24:
            key.gate = Degree2Radian(Min2Degree(MEASUREMENT));
            break;
        case 25:
            key.gate = Degree2Grad(Min2Degree(MEASUREMENT));
            break;
        case 26:
            key.gate = Degree2Sextant(Min2Degree(MEASUREMENT));
            break;
        case 27:
            key.gate = Degree2Rumb(Min2Degree(MEASUREMENT));
            break;
        case 31:
            key.gate = Degree2Sec(MEASUREMENT);
            break;
        case 32:
            key.gate = Degree2Min(MEASUREMENT);
            break;
        case 34:
            key.gate = Degree2Radian(MEASUREMENT);
            break;
        case 35:
            key.gate = Degree2Grad(MEASUREMENT);
            break;
        case 36:
            key.gate = Degree2Sextant(MEASUREMENT);
            break;
        case 37:
            key.gate = Degree2Rumb(MEASUREMENT);
            break;
        case 41:
            key.gate = Degree2Sec(Radian2Degree(MEASUREMENT));
            break;
        case 42:
            key.gate = Degree2Min(Radian2Degree(MEASUREMENT));
            break;
        case 43:
            key.gate = Radian2Degree(MEASUREMENT);
            break;
        case 45:
            key.gate = Degree2Grad(Radian2Degree(MEASUREMENT));
            break;
        case 46:
            key.gate = Degree2Sextant(Radian2Degree(MEASUREMENT));
            break;
        case 47:
            key.gate = Degree2Rumb(Radian2Degree(MEASUREMENT));
            break;
        case 51:
            key.gate = Degree2Sec(Grad2Degree(MEASUREMENT));
            break;
        case 52:
            key.gate = Degree2Min(Grad2Degree(MEASUREMENT));
            break;
        case 53:
            key.gate = Grad2Degree(MEASUREMENT);
            break;
        case 54:
            key.gate = Degree2Radian(Grad2Degree(MEASUREMENT));
            break;
        case 56:
            key.gate = Degree2Sextant(Grad2Degree(MEASUREMENT));
            break;
        case 57:
            key.gate = Degree2Rumb(Grad2Degree(MEASUREMENT));
            break;
        case 61:
            key.gate = Degree2Sec(Sextant2Degree(MEASUREMENT));
            break;
        case 62:
            key.gate = Degree2Min(Sextant2Degree(MEASUREMENT));
            break;
        case 63:
            key.gate = Sextant2Degree(MEASUREMENT);
            break;
        case 64:
            key.gate = Degree2Radian(Sextant2Degree(MEASUREMENT));
            break;
        case 65:
            key.gate = Degree2Grad(Sextant2Degree(MEASUREMENT));
            break;
        case 67:
            key.gate = Degree2Rumb(Sextant2Degree(MEASUREMENT));
            break;
        case 71:
            key.gate = Degree2Sec(Rumb2Degree(MEASUREMENT));
            break;
        case 72:
            key.gate = Degree2Min(Rumb2Degree(MEASUREMENT));
            break;
        case 73:
            key.gate = Rumb2Degree(MEASUREMENT);
            break;
        case 74:
            key.gate = Degree2Radian(Rumb2Degree(MEASUREMENT));
            break;
        case 75:
            key.gate = Degree2Grad(Rumb2Degree(MEASUREMENT));
            break;
        case 76:
            key.gate = Degree2Sextant(Rumb2Degree(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
double selectionswitchTime(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           " 1 - Наносекунды;\n"
           " 2 - Микросекунды;\n"
           " 3 - Миллисекунды;\n"
           " 4 - Секунды;\n"
           " 5 - Минуты;\n"
           " 6 - Часы;\n"
           " 7 - Сутки;\n"
           " 8 - Недели;\n"
           " 9 - Года;\n"
           " 10 - Века;\n \t");
    scanf("%s", key.in);
    key.input_choice = parsing_id(key.in);
    while(key.input_choice > 10 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.in);
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           " 1 - Наносекунды;\n"
           " 2 - Микросекунды;\n"
           " 3 - Миллисекунды;\n"
           " 4 - Секунды;\n"
           " 5 - Минуты;\n"
           " 6 - Часы;\n"
           " 7 - Сутки;\n"
           " 8 - Недели;\n"
           " 9 - Года;\n"
           " 10 - Века;\n \t");
	scanf("%s", key.out);
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.output_choice > 10 || key.output_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.out);
        key.output_choice = parsing_id(key.out);
    }

    key.id = key.input_choice * 100 + key.output_choice;

    //printf("ID равно %d", key.id);

    switch(key.id) {
        case 102:
            key.gate = min_to_mksec(nsec_to_min(MEASUREMENT));
            break;
        case 103:
            key.gate = min_to_msec(nsec_to_min(MEASUREMENT));
            break;
        case 104:
            key.gate = min_to_sec(nsec_to_min(MEASUREMENT));
            break;
        case 105:
            key.gate = nsec_to_min(MEASUREMENT);
            break;
        case 106:
            key.gate = min_to_chas(nsec_to_min(MEASUREMENT));
            break;
        case 107:
            key.gate = min_to_sut(nsec_to_min(MEASUREMENT));
            break;
        case 108:
            key.gate = min_to_week(nsec_to_min(MEASUREMENT));
            break;
        case 109:
            key.gate = min_to_year(nsec_to_min(MEASUREMENT));
            break;
        case 110:
            key.gate = min_to_vek(nsec_to_min(MEASUREMENT));
            break;
        case 201:
            key.gate = min_to_nsec(mksec_to_min(MEASUREMENT));
            break;
        case 203:
            key.gate = min_to_msec(mksec_to_min(MEASUREMENT));
            break;
        case 204:
            key.gate = min_to_sec(mksec_to_min(MEASUREMENT));
            break;
        case 205:
            key.gate = mksec_to_min(MEASUREMENT);
            break;
        case 206:
            key.gate = min_to_chas(mksec_to_min(MEASUREMENT));
            break;
        case 207:
            key.gate = min_to_sut(mksec_to_min(MEASUREMENT));
            break;
        case 208:
            key.gate = min_to_week(mksec_to_min(MEASUREMENT));
            break;
        case 209:
            key.gate = min_to_year(mksec_to_min(MEASUREMENT));
            break;
        case 210:
            key.gate = min_to_vek(mksec_to_min(MEASUREMENT));
            break;
        case 301:
            key.gate = min_to_nsec(msec_to_min(MEASUREMENT));
            break;
        case 302:
            key.gate = min_to_mksec(msec_to_min(MEASUREMENT));
            break;
        case 304:
            key.gate = min_to_sec(msec_to_min(MEASUREMENT));
            break;
        case 305:
            key.gate = msec_to_min(MEASUREMENT);
            break;
        case 306:
            key.gate = min_to_chas(msec_to_min(MEASUREMENT));
            break;
        case 307:
            key.gate = min_to_sut(msec_to_min(MEASUREMENT));
            break;
        case 308:
            key.gate = min_to_week(msec_to_min(MEASUREMENT));
            break;
        case 309:
            key.gate = min_to_year(msec_to_min(MEASUREMENT));
            break;
        case 310:
            key.gate = min_to_vek(msec_to_min(MEASUREMENT));
            break;
        case 401:
            key.gate = min_to_nsec(sec_to_min(MEASUREMENT));
            break;
        case 402:
            key.gate = min_to_mksec(sec_to_min(MEASUREMENT));
            break;
        case 403:
            key.gate = min_to_msec(sec_to_min(MEASUREMENT));
            break;
        case 405:
            key.gate = sec_to_min(MEASUREMENT);
            break;
        case 406:
            key.gate = min_to_chas(sec_to_min(MEASUREMENT));
            break;
        case 407:
            key.gate = min_to_sut(sec_to_min(MEASUREMENT));
            break;
        case 408:
            key.gate = min_to_week(sec_to_min(MEASUREMENT));
            break;
        case 409:
            key.gate = min_to_year(sec_to_min(MEASUREMENT));
            break;
        case 410:
			key.gate = min_to_vek(sec_to_min(MEASUREMENT));
            break;
        case 501:
            key.gate = min_to_nsec(MEASUREMENT);
            break;
        case 502:
            key.gate = min_to_mksec(MEASUREMENT);
            break;
        case 503:
            key.gate = min_to_msec(MEASUREMENT);
            break;
        case 504:
            key.gate = min_to_sec(MEASUREMENT);
            break;
        case 506:
            key.gate = min_to_chas(MEASUREMENT);
            break;
        case 507:
            key.gate = min_to_sut(MEASUREMENT);
            break;
        case 508:
            key.gate = min_to_week(MEASUREMENT);
            break;
        case 509:
            key.gate = min_to_year(MEASUREMENT);
            break;
        case 510:
            key.gate = min_to_vek(MEASUREMENT);
            break;
        case 601:
            key.gate = min_to_nsec(chas_to_min(MEASUREMENT));
            break;
        case 602:
            key.gate = min_to_mksec(chas_to_min(MEASUREMENT));
            break;
        case 603:
            key.gate = min_to_msec(chas_to_min(MEASUREMENT));
            break;
        case 604:
            key.gate = min_to_sec(chas_to_min(MEASUREMENT));
            break;
        case 605:
            key.gate = chas_to_min(MEASUREMENT);
            break;
        case 607:
            key.gate = min_to_sut(chas_to_min(MEASUREMENT));
            break;
        case 608:
            key.gate = min_to_week(chas_to_min(MEASUREMENT));
            break;
        case 609:
            key.gate = min_to_year(chas_to_min(MEASUREMENT));
            break;
        case 610:
            key.gate = min_to_vek(chas_to_min(MEASUREMENT));
            break;
        case 701:
            key.gate = min_to_nsec(sut_to_min(MEASUREMENT));
            break;
        case 702:
            key.gate = min_to_mksec(sut_to_min(MEASUREMENT));
            break;
        case 703:
            key.gate = min_to_msec(sut_to_min(MEASUREMENT));
            break;
        case 704:
            key.gate = min_to_sec(sut_to_min(MEASUREMENT));
            break;
        case 705:
            key.gate = sut_to_min(MEASUREMENT);
            break;
        case 706:
            key.gate = min_to_chas(sut_to_min(MEASUREMENT));
            break;
        case 708:
            key.gate = min_to_week(sut_to_min(MEASUREMENT));
            break;
        case 709:
            key.gate = min_to_year(sut_to_min(MEASUREMENT));
            break;
        case 710:
            key.gate = min_to_vek(sut_to_min(MEASUREMENT));
            break;
        case 801:
            key.gate = min_to_nsec(week_to_min(MEASUREMENT));
            break;
        case 802:
            key.gate = min_to_mksec(week_to_min(MEASUREMENT));
            break;
        case 803:
            key.gate = min_to_msec(week_to_min(MEASUREMENT));
            break;
        case 804:
            key.gate = min_to_sec(week_to_min(MEASUREMENT));
            break;
        case 805:
            key.gate = week_to_min(MEASUREMENT);
            break;
        case 806:
            key.gate = min_to_chas(week_to_min(MEASUREMENT));
            break;
        case 807:
            key.gate = min_to_sut(week_to_min(MEASUREMENT));
            break;
        case 809:
            key.gate = min_to_year(week_to_min(MEASUREMENT));
            break;
        case 810:
            key.gate = min_to_vek(week_to_min(MEASUREMENT));
            break;
        case 901:
            key.gate = min_to_nsec(year_to_min(MEASUREMENT));
            break;
        case 902:
            key.gate = min_to_mksec(year_to_min(MEASUREMENT));
            break;
        case 903:
            key.gate = min_to_msec(year_to_min(MEASUREMENT));
            break;
        case 904:
            key.gate = min_to_sec(year_to_min(MEASUREMENT));
            break;
        case 905:
            key.gate = year_to_min(MEASUREMENT);
            break;
        case 906:
            key.gate = min_to_chas(year_to_min(MEASUREMENT));
            break;
        case 907:
            key.gate = min_to_sut(year_to_min(MEASUREMENT));
            break;
        case 908:
            key.gate = min_to_week(year_to_min(MEASUREMENT));
            break;
        case 910:
            key.gate = min_to_vek(year_to_min(MEASUREMENT));
            break;
        case 1001:
            key.gate = min_to_nsec(vek_to_min(MEASUREMENT));
            break;
        case 1002:
            key.gate = min_to_mksec(vek_to_min(MEASUREMENT));
            break;
        case 1003:
            key.gate = min_to_msec(vek_to_min(MEASUREMENT));
            break;
        case 1004:
            key.gate = min_to_sec(vek_to_min(MEASUREMENT));
            break;
        case 1005:
            key.gate = vek_to_min(MEASUREMENT);
            break;
        case 1006:
            key.gate = min_to_chas(vek_to_min(MEASUREMENT));
            break;
        case 1007:
            key.gate = min_to_sut(vek_to_min(MEASUREMENT));
            break;
        case 1008:
            key.gate = min_to_week(vek_to_min(MEASUREMENT));
            break;
        case 1009:
            key.gate = min_to_year(vek_to_min(MEASUREMENT));
            break;
        default:
            printf("Не введено значение конвертируемой величины, "
                   "или Вы пытаетесь конвертировать в величину, которую уже преобразуете\n");
            break;
    }

    return key.gate;
}
double selectionswitchResistance(double MEASUREMENT)
{
    FunctionsParameters key;

    printf("Выберите величину, из которой Вы хотите произвести конвертирование:\n"
           "1 - Сименс;\n"
           "2 - Микроом;\n"
           "3 - Миллиом;\n"
           "4 - Ом = Вольт на ампер;\n\t");
    scanf("%s", key.in);
    key.input_choice = parsing_id(key.in);
    while(key.input_choice >= 4 || key.input_choice == 0) {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.in);
        key.input_choice = parsing_id(key.in);
    }

    printf("Выберите величину, в которую Вы хотите конвертировать Вашу величину.\n"
           "Не нужно выбирать ту же величину, что Вы выбрали в качестве конвертируемой:\n"
           "1 - Сименс;\n"
           "2 - Микроом;\n"
           "3 - Миллиом;\n"
           "4 - Ом = Вольт на ампер;\n\t");
    scanf("%s", key.out);
    key.output_choice = parsing_id(key.out);
    while(key.output_choice == key.input_choice || key.input_choice >= 5 || key.input_choice == 0 )  {
        fprintf(stderr, "\nВы выбрали величину, которой нет в списке доступных величин, \nили Вы пытаетесь конвертировать "
                "одну и ту же величину. \nПожалуйста, сделайте корректный выбор\n\t");
        scanf("%s", key.out);
        key.output_choice = parsing_id(key.out);
    }

    key.id = key.input_choice * 10 + key.output_choice;

    switch(key.id) {
        case 12:
            key.gate = OmTOuOm(SimensTOOm(MEASUREMENT));
            break;
        case 13:
            key.gate = OmTOmOm(SimensTOOm(MEASUREMENT));
            break;
        case 14:
            key.gate = SimensTOOm(MEASUREMENT);
            break;
        case 21:
            key.gate = OmTOSimens(uOmTOOm(MEASUREMENT));
            break;
        case 23:
            key.gate = OmTOmOm(uOmTOOm(MEASUREMENT));
            break;
        case 24:
            key.gate = uOmTOOm(MEASUREMENT);
            break;
        case 31:
            key.gate = OmTOSimens(mOmTOOm(MEASUREMENT));
            break;
        case 32:
            key.gate = OmTOuOm(mOmTOOm(MEASUREMENT));
            break;
        case 34:
            key.gate = mOmTOOm(MEASUREMENT);
            break;
        case 41:
            key.gate = OmTOSimens(MEASUREMENT);
            break;
        case 42:
            key.gate = OmTOuOm(MEASUREMENT);
            break;
        case 43:
            key.gate = OmTOmOm(MEASUREMENT);
            break;
    }
    return key.gate;
}