Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнить два кода, один правильно считает другой нет 
V
    Опции темы
Hellen
Дата 30.1.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 3.7.2006
Где: Москва

Репутация: 1
Всего: 3



Я всётаки сделала подсчет дней  в диапазоне времени без выходных дней, но когда начала претворять в жизнь код считает все дни и субботы и воскресения.
Сравните пжлста два кода , не пойму в чём разница


Этот код считает правильно, вычитает выходные дни:
Код

procedure TForm1.Button2Click(Sender: TObject);
begin
Calendar.MinDate:=Picker1.DateTime;
Calendar.MaxDate:=Picker2.DateTime;
Edit1.Text:=IntToStr(Work(Picker1.Date,Picker2.Date+1));
end;
function TForm1.Work(nach, konec: TDateTime): Integer;
var
 vih:    integer;
 kolday: word;
begin
kolday:=DaysBetween(nach,konec);
Result:=kolday;
for vih := 0 to kolday - 1 do
  begin
    if DayOfWeek(nach+vih)-1 in [6,0] then
    Result:=Result - 1;
end;
end;
end.


А этот код считает не правильно, он считает  все дни, выходные не вычитает:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
Calendar.MinDate:=Picker1.DateTime;
Calendar.MaxDate:=Picker2.DateTime;
edit1.Text:=IntToStr(Work(Picker1.Date,Picker2.Date+1))
end;

function TForm1.Work(n, k: TDateTime): Integer;
var
 vih:    integer;
 kolday: word;

begin
kolday:=DaysBetween(n,k);
Result:=kolday;
for  vih := 0 to kolday - 1 do
begin
    if DayOfWeek(n+k)-1 in [6,0] then
    Result:=Result - 1;
end;
end;
end.

PM MAIL   Вверх
kemiisto
Дата 30.1.2009, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



18-ые строки разные! smile Я не шучу!

Добавлено через 1 минуту и 33 секунды
В рабочем варианте прибавляется vih
Цитата(Hellen @  30.1.2009,  14:50 Найти цитируемый пост)
if DayOfWeek(nach+vih)-1 in [6,0] then

а в нерабочем k.
Цитата(Hellen @  30.1.2009,  14:50 Найти цитируемый пост)
if DayOfWeek(n+k)-1 in [6,0] then




--------------------
PM MAIL WWW GTalk Jabber   Вверх
bems
Дата 30.1.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(Hellen @  30.1.2009,  16:50 Найти цитируемый пост)
   if DayOfWeek(n+k)-1 in [6,0] then
ну вот в это условие одинаковое на каждой итерации, а в правильном коде там переменная цикла фигурирует:
Цитата(Hellen @  30.1.2009,  16:50 Найти цитируемый пост)
 if DayOfWeek(nach+vih)-1 in [6,0] then
    Result:=Result - 1;
тут vih меняется и условие приобретает смысл

Добавлено через 3 минуты и 10 секунд
kemiisto, быстрый smile


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Hellen
Дата 30.1.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 3.7.2006
Где: Москва

Репутация: 1
Всего: 3



Вот я шляпа!!!!!!
Спасибо....сейчас всё нормально........
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0742 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.