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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 08:47   #1
zheka21
Новичок
Джуниор
 
Регистрация: 08.11.2012
Сообщений: 7
По умолчанию по списку календарных дат найте те, которые являются понедельниками (в Delphi)

Программа согласна которая списку дат одного плана,определит, скока дней приходится в нем на понедельник. 1 сентября 1986 был понедельник.еще стоит отметить, что 1987 г не высокосный
Код:
a.in                               a.out 
5                                       2
08.09.1986                         
13.09.1986
22.09.1986
01.04.1987
05.04.1987

_________
1. теме нужно давать ОСМЫСЛЕННОЕ название.
Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться,
а автор такой темы получать штрафы.

2. Для учебных задач предназначен раздел форума "Помощь студентам"

Прошу учесть на будущее...

Модератор.

Последний раз редактировалось Serge_Bliznykov; 08.11.2012 в 09:07.
zheka21 вне форума Ответить с цитированием
Старый 08.11.2012, 09:05   #2
zheka21
Новичок
Джуниор
 
Регистрация: 08.11.2012
Сообщений: 7
По умолчанию

плз срочно помогите
zheka21 вне форума Ответить с цитированием
Старый 08.11.2012, 09:31   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от zheka21
плз срочно помогите
Ого! Даже так!
Сколько платите?!



я на 99% уверен в том, что Вам нужно решение не на Delphi, а на Паскале.
вы спросите в чём отличие? Так в том, что в Delphi уже имеется куча готовых библиотек. Есть и такие, которые позволяют работать с календарными датами.

на Delphi решение вашей задачи может выглядеть так:
Код:
program DateCount;

{$APPTYPE CONSOLE}

uses
  SysUtils, DateUtils;

var i, n, kMon : integer;
  s : string;
begin
  reset(input, 'a.in');
  rewrite(output, 'a.out');
  readln(n);
  kMon := 0;
  for i := 1 to n do begin
    Readln(s);
    s := trim(s);
    if DayOfTheWeek(
        EncodeDate(
          StrToInt(copy(s,7,4)),
          StrToInt(copy(s,4,2)),
          StrToInt(copy(s,1,2)))) = 1 then
                inc(kMon);

  end;
  WriteLn(kMon);
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2012, 09:31   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Че там помогать-то, две строчки написать. В Хелп Дельфи слазить лень?

Код:
const n=5;
      d: array [1..n] of string=('08.09.1986','13.09.1986','22.09.1986','01.04.1987','05.04.1987');

var i: integer;

begin
  For i:=1 to n do
    if DayOfWeek(StrToDate(d[i]))=2 then WriteLn(i);
  ReadLn;
end.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.11.2012, 09:40   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sciv

я предпочитаю использовать DayOfTheWeek

цитирую:
Цитата:
Код:
DayOfWeek returns the day of the week 
of the specified date as an integer between 1 and 7, 
where Sunday is the first day of the week and Saturday is the seventh. 

Note:  DayOfWeek is not compliant with the ISO 8601 standard, 
which defines Monday as the first day of the week. 
For an ISO 8601 compliant version, use the DayOfTheWeek function instead. 
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2012, 09:55   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Это-то я знаю. Но в данном случае непринципиально, разве нет?

И я неправильно понял задачу - программа выдает не сколько дней, а номера понедельников в массиве
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.11.2012, 10:28   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Sciv
Это-то я знаю. Но в данном случае непринципиально, разве нет?
абсолютно непринципиально. Просто у нас как то принято, что первый день недели понедельник, а седьмой день недели - воскресение. Но, по сути, согласен, если помнить про то, что возвращает конкретная функция - можно легко пользоваться любой (тем более, в данной задаче, где нужно только сравнить с заданным днём!)

Цитата:
Сообщение от Sciv
И я неправильно понял задачу - программа выдает не сколько дней, а номера понедельников в массиве
Ага. Это так. я видел. не стал Вам ничего говорить. Как и то, что данные должны считываться из текстового файла, а не задаваться в программе.

Ибо:
1) есть полностью мой рабочий код постом выше.
2) если у человека не хватит смекалки и сообразительности исправить в вашей задаче выдачу номеров на подсчёт количества, то ему лучше вообще ничего не программировать, ибо не его это...


а вот то, что автор темы молчит, меня немного огорчает...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти количество членов последовательности b1,b2..bn, которые имеют четные порядковые номера и являются нечетными числами (Паскаль Vetal_1715 Помощь студентам 3 23.05.2012 13:20
Необходимо определить количество слов, которые являются "перевертышами" Алексей_1 Паскаль, Turbo Pascal, PascalABC.NET 2 08.05.2011 22:40
Записать в файл g все компоненты файла f, которые являются полными квадратами. loloverg Помощь студентам 1 20.05.2010 04:36
Выбрать и напечатать элементы, которые являются листами дерева sergogo Помощь студентам 0 31.10.2009 22:55
5 дат, которые должен знать каждый Гриха Свободное общение 37 23.02.2007 18:41