Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 02:48

Простейшая задача: найти среднее число из трех

Автор Travmatolog05, 03 мар 2022, 17:32

0 Пользователей и 1 гость просматривают эту тему.

kodzo

Процедура ВозвратСреднегоЧисла(Число1, Число2, Число3)
    Если Число1 > Число2 И Число1 < Число3
        ИЛИ Число1 < Число2 И Число1 > Число3 Тогда
               СреднееЧисло = Число1;   
    ИначеЕсли Число2 > Число1 И Число2 < Число3
        ИЛИ Число2 < Число1 И Число2 > Число3 Тогда
            СреднееЧисло = Число2;
    ИначеЕсли Число3 > Число1 И Число3 < Число2
        ИЛИ Число3 < Число1 И Число3 > Число2 Тогда
            СреднееЧисло = Число3;
    КонецЕсли;
    Сообщить(СреднееЧисло);
КонецПроцедуры

SasaSupov

Вот два варианта:
Функция ПолучитьСреднееЗначение(ч1, ч2, ч3)
    Возврат ч1 + ч2 + ч3 - макс(ч1, ч2, ч3) - мин(ч1, ч2, ч3);
КонецФункции

// без функций макс/мин
Функция ПолучитьСреднееЗначение1(x1, x2, x3)
    max = ?(x1 > x2, x1, x2);
    max = ?(max > x3, max, x3);
    min = ?(x1 < x2, x1, x2);
    min = ?(min < x3, min, x3);
   
    Возврат x1 + x2 + x3 - max - min;
КонецФункции

SasaSupov

Функция ПолучитьСреднееЗначение2(ч1, ч2, ч3) // 3 1 2
Среднее = ч1;                             
Если (ч1 < ч2 И ч2 < ч3) ИЛИ (ч3 < ч2 И ч2 < ч1) Тогда
Среднее = ч2;
ИначеЕсли (ч1 < ч3 И ч3 < ч2) ИЛИ (ч2 < ч3 И ч3 < ч1) Тогда
Среднее = ч3;
КонецЕсли;
Возврат Среднее;
КонецФункции

// Тестирование
Сообщить(ПолучитьСреднееЗначение2(1, 2, 3));
Сообщить(ПолучитьСреднееЗначение2(1, 3, 2));
Сообщить(ПолучитьСреднееЗначение2(2, 1, 3));
Сообщить(ПолучитьСреднееЗначение2(2, 3, 1));
Сообщить(ПолучитьСреднееЗначение2(3, 1, 2));
Сообщить(ПолучитьСреднееЗначение2(3, 2, 1));


anton_2C

Всем привет. Изучаю этот же курс от Ивана) Не уверен что красиво, но решил вот так.

Функция ПолучитьСреднееЗначение(Число1, Число2, Число3)
    Если Число1 <= Число2 И Число1 >= Число3 Тогда
        Результат = "Число " + Число1 + " Среднее";
    ИначеЕсли Число1 <= Число3 И Число1 >= Число2 Тогда
        Результат = "Число " + Число1 + " Среднее";
    ИначеЕсли Число2 <= Число1 И Число2 >= Число3 Тогда
        Результат ="Число " + Число2 + " Среднее";
    ИначеЕсли Число2 <= Число3 И Число2 >= Число1 Тогда
        Результат = "Число " + Число2 + " Среднее";     
    ИначеЕсли Число3 <= Число1 И Число3 >= Число2 Тогда
        Результат = "Число " + Число3 + " Среднее";
    ИначеЕсли Число3 <= Число2 И Число3 >= Число1 Тогда
        Результат = "Число " + Число3 + " Среднее";
    КонецЕсли;
    Возврат Результат;
КонецФункции

LexaK

anton_2C, а сортировку вам  не запрещено использовать?
тогда еще такой вариант получается

Функция ПолучитьСреднееЗначение(Число1, Число2, Число3)

 окЗначений;
Сз.Добавить(Число1,"Число1");
Сз.Добавить(Число2,"Число2");
Сз.Добавить(Число3,"Число3"); 
СЗ.СортироватьПоЗначению();

    результат = "Среднее число: " + СЗ[1].Значение + " " + СЗ[1].Представление ;
    Возврат Результат;
КонецФункции

если помогло нажмите: Спасибо!

anton_2C

LexaK, Там суть задания, в понимании сложных условий, а не работа с коллекциями, но за ответ спасибо. 

LexaK

Цитата: anton_2C от 26 июл 2024, 16:19LexaK, Там суть задания, в понимании сложных условий, а не работа с коллекциями, но за ответ спасибо. 
аааа....
для разнообразия понимания сложных условий еще один вариант

Если Число1 >= Число2 и Число1 >= Число3 Тогда
Если Число2 >= Число3 Тогда
        Результат = "Число2";
Иначе
        Результат = "Число3";
КонецЕсли;
ИначеЕсли Число2 >= Число1 и Число2 >= Число3 Тогда
Если Число1 >= Число3 Тогда
        Результат = "Число1";
Иначе
        Результат = "Число3";
КонецЕсли;
Иначе//Если Число3 >= Число1 и Число3 >= Число2 Тогда
Если Число1 >= Число2 Тогда
        Результат = "Число1";
Иначе
        Результат = "Число2";
КонецЕсли;
КонецЕсли;

Результат = "Среднее " + Результат + " = " + Вычислить(Результат);
Сообщить(Результат);

если помогло нажмите: Спасибо!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск