Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

Помогите с алгоритмом
ИвановБ вне форума   Ответить с цитированием
Старый 25.12.2016, 18:35   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,247
Репутация: 5820
По умолчанию

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан текст. Найти множество всех слов, которые встречаются во всех предло-жениях текста. 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




16:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru