Информация об изменениях

Сообщение Re[3]: [забыл математику] Оптимизация алгоритма от 15.09.2022 12:05

Изменено 15.09.2022 14:30 xma

Re[3]: [забыл математику] Оптимизация алгоритма
Здравствуйте, Real 3L0, Вы писали:

  рассуждения и "оправдания" (c)
xma>>const decimal size = marketBuyPrice — mediumPrice2;
R3>Ругается на const.

тебе шашечки или ехать ? просил накатать общую идею исправленного алгоритма — я тебе дал, если ругается на const — значит убери его .. (я же не профи в синтаксисе всех возможных языках программирования)

xma>>(вроде верно)

R3>Часто не совпадает.

ну главное то — идея

залей на dotnetfiddle.net — твой оригинал, и мой код .. посмотрим где не совпадает, и тогда понятно станет — как исправить .. (да, будь я сварщиком — меня бы давно уже убило) ..

xma>>в твоём же коде вообще, если overwriteMinStep.Value <= 0, то твой код уйдёт в бесконечный цикл (если в первый раз сработает условие while) ..

R3>Там не может быть отрицательное значение. Ну, теоретически.

где написано, на заборе ? ну и золотое правило — если не хочешь проблем, то обрабатывай все случаи (напр., на время отладки — можно бросать exception'ы, в случае неправильных данных .. ну или если уверен в поставляемых в метод данных, то заглушка — как у меня, всё равно не помешает)


P.S.:

сделал, я краусавчег ..

decimal mediumPrice2 = marketBuyPrice + (marketBuyPrice % overwriteMinStep) * overwriteMinStep;


  source code
тут можешь проверить код
https://dotnetfiddle.net/

using System;
                    
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello World");
        
        var ret = test_original(95.1m, 0.2m);
        Console.WriteLine("ret = " + ret);
        
        var ret_opt = test_optimal(95.1m, 0.2m);
        Console.WriteLine("ret_opt = " + ret);
    }
    
    public static decimal test_original(decimal marketBuyPrice, decimal overwriteMinStep)
    {        
        decimal mediumPrice2 = 0;

        do
        {
            mediumPrice2 += overwriteMinStep;
        } while (mediumPrice2 < marketBuyPrice);
        
        return mediumPrice2;
    }
    
    public static decimal test_optimal(decimal marketBuyPrice, decimal overwriteMinStep)
    {        
        decimal mediumPrice2 = marketBuyPrice + (marketBuyPrice % overwriteMinStep) * overwriteMinStep;
            
        return mediumPrice2;
    }
}


R3>Там не может быть отрицательное значение. Ну, теоретически.

там подходит только (строго) overwriteMinStep > 0, если даже ноль — то твой оригинальный код при marketBuyPrice > 0, уйдёт в бесконечный цикл ..

мой код (метод test_optimal()) верен при условии что overwriteMinStep > 0, (а marketBuyPrice у тебя тоже вроде предполагается что больше нуля, так что отрицательные значения его — не проверял)
Re[3]: [забыл математику] Оптимизация алгоритма
Здравствуйте, Real 3L0, Вы писали:

xma>>const decimal size = marketBuyPrice — mediumPrice2;

R3>Ругается на const.

тебе шашечки или ехать ? просил накатать общую идею исправленного алгоритма — я тебе дал, если ругается на const — значит убери его .. (я же не профи в синтаксисе всех возможных языках программирования)

xma>>(вроде верно)

R3>Часто не совпадает.

ну главное то — идея

залей на dotnetfiddle.net — твой оригинал, и мой код .. посмотрим где не совпадает, и тогда понятно станет — как исправить .. (да, будь я сварщиком — меня бы давно уже убило) ..

xma>>в твоём же коде вообще, если overwriteMinStep.Value <= 0, то твой код уйдёт в бесконечный цикл (если в первый раз сработает условие while) ..

R3>Там не может быть отрицательное значение. Ну, теоретически.

где написано, на заборе ? ну и золотое правило — если не хочешь проблем, то обрабатывай все случаи (напр., на время отладки — можно бросать exception'ы, в случае неправильных данных .. ну или если уверен в поставляемых в метод данных, то заглушка — как у меня, всё равно не помешает)

R3>Там не может быть отрицательное значение. Ну, теоретически.

там подходит только (строго) overwriteMinStep > 0, если даже ноль — то твой оригинальный код при marketBuyPrice > 0, уйдёт в бесконечный цикл ..