Перейти к содержимому

Донат
На хостинг
ISK за переводы
до 75kk за 1000зн.
Хроники EVE
Сборник
Новичкам
Полезная информация
Фотография

Гуру программисты помогите пожалуйста :)


  • Авторизуйтесь для ответа в теме
2 ответов в теме

#1
Thor234

Thor234

    Clone Grade Beta

  • Tech II Pilots
  • Pip
  • 87 сообщений
3
  • EVE Ingame:LordDagon
Добрый вечер Уважаемые пилоты, я начинающий программист и появилась задачка, решить которую пока затрудняюсь.
Помогите пожалуйста с решением, а я попробую разобраться во всем, ибо обратиться больше не к кому.
Буду благодарен всем кто откликнется, надеюсь и уповаю на рускомьюнити.

1. По программированию:
Дано:
Структура содержащая в себе два вида объектов
1. Узлы
2. Ветви
Имеется стартовый узел (корень). Этот узел является текущим изначально.
Объекты имеют уникальный номер.
Объекты не имеют перекрестных связей - у объекта один родитель (тип дерево).

Узел содержит в себе информацию о дочерних узлах и ветвях (коллекция номеров).
Ветвь содержит в себе только свой собственный номер.

Инструменты:
1. Function Get () return Coll[..]
Функция без параметров - возвращает коллекцию номеров (Coll[..]) объектов находящихся в текущем узле. Нумерация элементов коллекции начинается с единицы. Каждый элемент коллекции содержит номер только одного объекта. У коллекции есть параметр Coll.count который показывает количество элементов в коллекции на текущий момент.
2. Function Go (nom) return Bolean
Функция в качестве параметра принимает номер узла и делает этот узел текущим. В случае успешной работы возвращает True, в противном случае False (текущим остается узел из которого была запущена функция).

Задание:
Написать процедуру, которая поместит в коллекцию Rez[..] номера ветвей находящихся в стартовом, а также во всех вложенных узлах.

-----------------------------------------

2.По SQL
Имеется схема:
create table sales( -Продажи
sales_date date not null, -Дата продажи
cod_good number(13) not null, -Товар
quantity number(9,3) not null, -Количество
price number(11,3) not null, -Цена в рублях
);

create table CURRENCY( -Курсы валют
DATE_OF_CUR DATE not null, -Дата
KURS NUMBER(9,4) not null, -Курс валюты по отношению к рублю
);

create unique index
CURR#DATE_OF_CUR on CURRENCY (DATE_OF_CUR);

Задание:
Необходимо посчитать оборот за период времени в валюте.
  • 0
Posted Image

#2
creage

creage

    Clone Grade Delta

  • Tech II Pilots
  • PipPip
  • 212 сообщений
7
  • EVE Ingame:Minage
  • Corp:UKR
  • Ally:UNL
  • Client:Eng
На каком языке нужно писать ответ на первый вопрос? Там все элементарно - рекурсивно юзаем Get() и Go() по всем узлам. Этож обычное дерево.

По второму вопросу навскидку:

SELECT
sales.sales_date,
sales.cod_good,
SUM(sales.price/currency.kurs)*sales.quantity) AS total
FROM
sales
LEFT JOIN
currency
ON
sales.sales_date = currency.date_of_cur
GROUP BY
sales.sales_date

Это вернет таблицу с оборотами по каждому дню. Если нужен период, добавляем к запросу следующие строки:

WHERE
sales.sales_date > нижняя_дата
AND
sales.sales_date < верхняя_дата

Вот. Как-то так.
  • 1

#3
Thor234

Thor234

    Clone Grade Beta

  • Tech II Pilots
  • Pip
  • 87 сообщений
3
  • EVE Ingame:LordDagon
Большое спасибо, со вторым разобрался. Вот, что получилось:

select sum(price*quantity/kurs) as Oborot,
cod_good as CodTovara from sales, currency
where cod_good = 'Код товара'
and (sales_date between '01.1.2008' and '31.12.2008')
and (sales_date = date_of_cur)
group by cod_good

Проверил, вроде все работает так как нужно, работал в СУБД Interbase.

А вот с первым беда, никак не могу разобраться. Понятно, что нужно использовать рекурсию, но вот как это все грамотно описать хотя бы наброском никак не разберусь. Использовать нужно Object Pascal (Delphi). Буду признателен всем кто поможет разобраться с кодом.
  • 0
Posted Image




1 посетителей читают тему

0 members, 1 guests, 0 anonymous users