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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2008, 09:29   #1
Saaashka
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 13
По умолчанию Помогите с заданием в Паскале

Составьте программу, которая по номеру дня в году выводит число и месяц в об-щепринятой форме (например, 33-й день года — 2 февраля).
Saaashka вне форума Ответить с цитированием
Старый 17.06.2008, 13:39   #2
igroman
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 75
По умолчанию

Простейший вариант с помощью условий if then else.

if (DenGoda < 31) xor (DenGoda =31) then
Writeln(DenGoda + 'Января')
else if ((DenGoda > 31) and (DenGoda < 61)) xor (DenGoda = 61) then
begin
DenGoda := DenGoda - 31;
Writeln(DenGoda - 31 + 'Февраля');
end
else
и т.д.
igroman вне форума Ответить с цитированием
Старый 17.06.2008, 14:14   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ну зачем же так сложно. Вот весь код. Конечно, по хорошему, надо предусмотреть ещё високосный год, но автору это вроде не требуется
Код:
const dayinmonth: array[1..12] of integer =
  (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
      monthname: array[1..12] of string =
  ('yanvarya', 'fevralya', 'marta', 'aprelya',
   'maya', 'iyunya', 'iyulya', 'avgusta',
   'sentyabrya', 'oktyabrya', 'noyabrya', 'dekabrya');

var i: integer;
    number: integer;
    day: integer;
    month: string;

begin
readln(number);
i := 1;
while number > dayinmonth[i] do
  begin
  number := number - dayinmonth[i];
  i := i + 1;
  end;
month := monthname[i];
day := number;
writeln(day,' ',month);
end.
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 17.06.2008, 20:42   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а если добавить переменную year и после главного begin написать так:
Код:
  WriteLn('Ukagite god i nomer dnya');
  Readln(Year, Number);
  if (Year mod 4 = 0)
          and (Year mod 4000 <> 0) and
            ((Year mod 100 <> 0) or (Year mod 400 = 0)) then
     dayinmonth[2] := 29;
...
то и в високосные года будет работать... :-)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.06.2008, 21:47   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
and (Year mod 4000 <> 0) and
Это пожалуй много будет, понимаю что опечатка, можно не отвечать.
puporev вне форума Ответить с цитированием
Старый 18.06.2008, 16:03   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код я взял в TPDate (c) by TurboPower.

И это не опечатка!
http://answers.yahoo.com/question/in...AADjUh5&show=7
http://calendars.wikia.com/wiki/Leap_year

Хотя, безусловно Вы правы, для наших расчётов это можно точно опустить... ;-))))
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.06.2008, 16:06   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот код по второй Вашей ссылке.
Цитата:
if year mod 400 eq 0 then leap
else if year mod 100 eq 0 then no_leap
else if year mod 4 eq 0 then leap
else no_leap
puporev вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с заданием slim5 Помощь студентам 1 18.06.2008 08:50
Помогите с заданием... flait111 Помощь студентам 4 14.12.2007 16:49
Помогите с заданием подсчета! werser Microsoft Office Excel 6 08.12.2007 18:58
Помогите с заданием для зачёта! RatwielleR Помощь студентам 4 15.01.2007 16:02