Size: a a a

2020 September 11

АР

Александр Сергеевич ... in Delphi & Lazarus
во [цензура]) не катит
источник

Y

YuS in Delphi & Lazarus
Через подсчет десятичного остатка решается, но громоздко получается.
источник

Y

YuS in Delphi & Lazarus
Это я для покерного калькулятора делал. Когда банк надо разделить между людьми без остатка. Вот столкнулся. :).
источник

AS

Alexey Shumkin in Delphi & Lazarus
Александр Сергеевич Рудь
во [цензура]) не катит
Давай без резких выражений без достаточных причин :)
источник

AS

Alexey Shumkin in Delphi & Lazarus
YuS
Кстати задачка :). разделить число X на число N, чтоб соответственно получилось N целочисленных  чисел с округлением, чтоб в сумме давало число X. Например математически 350/4=87,5.  Но на выходе надо получить массив из 4-х целых чисел 87, 87, 88, 88 (сумма этих чисел =350). Т.е. итоговые числа должны быть максимально приближены к друг другу. Например 87, 87, 87, 89 - не правильно.
Делим нацело, берём остаток от деления и по единице от него накидываем каждому "участнику" дележа
источник

Y

YuS in Delphi & Lazarus
да кстати 19 mod 7 = 5.
источник

АР

Александр Сергеевич ... in Delphi & Lazarus
Alexey Shumkin
Давай без резких выражений без достаточных причин :)
ну ок, давай)
источник

AS

Alexey Shumkin in Delphi & Lazarus
Alexey Shumkin
Делим нацело, берём остаток от деления и по единице от него накидываем каждому "участнику" дележа
Там даже проще можно сделать (микрооптимизация): т.к.  остаток заведомо меньше количества участников, то просто в цикле от 0 до "остатка от деления" добавлять по единице :)
источник

Y

YuS in Delphi & Lazarus
Ага думаю самое простое
источник

Y

YuS in Delphi & Lazarus
от 0 до "остатка от деления" - 1 :)
источник

AS

Alexey Shumkin in Delphi & Lazarus
Renat Suleymanov
А тот метод правильней было бы сделать примерно так
procedure TSomeClass.SetX(j: integer; AValue: extended);
begin
 if (j>Length(FX)) or (j<0) then
   Exit; // Exit можно заменить на генерацию ошибки, либо на увеличение массива. Зависит от ситуации
 FX[j] := AValue;
end;
тут j >= Length должно быть ;))
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
Алексей, если будет время и возможность, посмотрите пожалуйста мои вопросы. Хочется понять реализацию свойств массивов в Lazarus.
я предлагаю делать тебе не реализацию сначала
а использование ))
это типа TDD-стиль написания кода ))
сначала пишешь код, который будет использоваться, а потом уже реализацию классов.. тогда ты будешь чётче представлять, что тебе надо...

у меня такое ощущение, что , как уже заметили, тебе нужны списки, а не  массивы...
если ты только добавляешь в массив, но не устанавливаешь его произвольный элемент, то вряд ли тебе нужен массив ))
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
Можете привести пример классической реализации свойства - типа динамический массив?
всё зависит от того, что именно тебе надо ))
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
Почему FPC не разрешает применение поля для свойства-динамический массив?
A read specifier for an array property is the name method function that has the same return type as the property type. The function must accept as a sole argument a variable of the same type as the index type. For an array property, one cannot specify fields as read specifiers.
ну FPC тут говорит правильную вещь ))
вообще нечего поля меня вне класса ))) (это к вопросу о private-public)
прими этот как данность )))
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Alexey Shumkin
я предлагаю делать тебе не реализацию сначала
а использование ))
это типа TDD-стиль написания кода ))
сначала пишешь код, который будет использоваться, а потом уже реализацию классов.. тогда ты будешь чётче представлять, что тебе надо...

у меня такое ощущение, что , как уже заметили, тебе нужны списки, а не  массивы...
если ты только добавляешь в массив, но не устанавливаешь его произвольный элемент, то вряд ли тебе нужен массив ))
Код уже есть. Он написан с применением глобальных переменных, ввиду того что писался на коленке для расчета физических величин изделия без понимания ООП-просто чтобы были результаты. Но сейчас пришло время его модернизировать, так как появились проблемы с масштабированием и производительностью. Гуглю TList и его применение.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
j-индекс, данная реализация приведена в FPC. Ну и гугл такие решения выдает :).
Type  
 TIntList = Class  
 Private  
   Function GetInt (I : Longint) : longint;  
   Procedure SetInt (I : Longint; Value : Longint;);  
 Public  
   Property Items [i : Longint] : Longint Read GetInt  
                                          Write SetInt;
ну, тут описание тлоько...
а твоя реализация (что была выше) - кривая ))
что она сделает если я вызову так:
TSomeClass.x[0] := 1
TSomeClass.x[0] := 2
TSomeClass.x[0] := 3
?
:)
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Alexey Shumkin
ну FPC тут говорит правильную вещь ))
вообще нечего поля меня вне класса ))) (это к вопросу о private-public)
прими этот как данность )))
Если не разрешает, то почему компилируется код, выполняется и дает результат?
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
Код уже есть. Он написан с применением глобальных переменных, ввиду того что писался на коленке для расчета физических величин изделия без понимания ООП-просто чтобы были результаты. Но сейчас пришло время его модернизировать, так как появились проблемы с масштабированием и производительностью. Гуглю TList и его применение.
что за проблемы с маштабированием? ))
с производительностью вопрос отдельный ))
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Alexey Shumkin
ну, тут описание тлоько...
а твоя реализация (что была выше) - кривая ))
что она сделает если я вызову так:
TSomeClass.x[0] := 1
TSomeClass.x[0] := 2
TSomeClass.x[0] := 3
?
:)
Ничего приятного :)
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
Ничего приятного :)
что ты имеешь в виду под "масштабированием"?
источник