Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2016, 17:08   #1
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию Уменьшать стоимость всех товаров на 10%

Уменьшать стоимость всех товаров на 10%, пока средняя стоимость всех товаров не станет меньше 100 рублей. работаю непосредственно с компонентом ADOTable через DBEGrid напрямую , то есть без SQL-запросов.

Помогите с алгоритмом
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 17:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Посчитай среднюю стоимость. И сколько раз ее нужно умножить на 0.9, чтобы бы она стала меньше 100. По сути решить уравнение в целых k: C*0.9^k<100. Получишь k раз. Потом на 0.9^k умножь стоимость каждого товара
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.12.2016 в 17:39.
Аватар вне форума Ответить с цитированием
Старый 25.12.2016, 18:22   #3
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

а если у меня будут добавляется еще товары средняя цена же изменится, как тогда?
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 18:25   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Естественно изменится. Но ты же сначала об этом не сказал. Тогда есть стоимость исходная и пересчитанная. И каждый раз при добавлении товаров по новой считай пересчитанную стоимость для всех записей по тому же алгоритму. Или забудь про исходную стоимость старых записей.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.12.2016, 18:27   #5
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

SQL запросом сделать это можно одной стракой, рекомендую начать изучать SQL, все равно без этого не обойтись.

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

Цитата:
а если у меня будут добавляется еще товары средняя цена же изменится, как тогда?
естесвенно, будете каждый раз запускать процедуру вычисления средней цены или хранить значения для вычисления средней после добавления в файлах, что разумнее всего - начнете привыкать к логированию.
Alar вне форума Ответить с цитированием
Старый 25.12.2016, 18:28   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Можно и SQL, но одной строкой не получится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.12.2016, 18:31   #7
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Можно и SQL, но одной строкой не получится
почему? я довольно часто это делаю, меняю на процент из за курса, при желании для ворпресс и опен карт могу найти коды

и SQL тем хорош, что можно очень сложные запросы, сделать одной строкой )

В данном случае будет один Update
Alar вне форума Ответить с цитированием
Старый 25.12.2016, 18:37   #8
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

Alar, я знаю SQL и знаю что через него проще, но в этом и загвоздка запрещено использовать SQL . Я напрямую работаю с ADOTable
ИвановБ вне форума Ответить с цитированием
Старый 25.12.2016, 18:41   #9
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

ИвановБ, как делать я описал, через циклы

DBEGrid - обычная матрица, в чём там могут быть сложности?
Alar вне форума Ответить с цитированием
Старый 25.12.2016, 18:48   #10
ИвановБ
Пользователь
 
Регистрация: 19.12.2016
Сообщений: 70
По умолчанию

То есть если средняя цена 4443 ее умножаем на 0.9. И нужно умножить на 37 раз, а можно ведь это сделать в цикле? То есть нажал 37 раз и действие застопорилось.
ИвановБ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан текст. Найти множество всех слов, которые встречаются во всех предло-жениях текста. Anton94.by Помощь студентам 1 31.03.2014 15:30
Уменьшать размер букв Label6 в зависимости от width Алексей_2012 Общие вопросы Delphi 6 24.03.2013 20:27
цикл for i:=0 to count -1 do. Уменьшать счётчик i внутри цикла... Человек_Борща Общие вопросы Delphi 10 01.07.2011 21:11
Имена всех секций всех ini-файлов (DELPHI) Dj_SheLL Помощь студентам 7 10.10.2010 17:44