Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для qwertytol
7 / 7 / 2
Регистрация: 20.02.2009
Сообщений: 116

Записи: получить дату, которая была за m дней до сегодняшнего дня

12.06.2009, 08:20. Показов 2700. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех. У меня вызвало затруднение такая задачка:

Написать прорамму: получающую дату, которая была за m дней до сегодняшнего дня;
Для представления даты использовать тип запись.
Вроде задача легкая но не соображу как делать. help plz

Добавлено через 41 минуту 41 секунду
вот че у меня получалось. но это несовсем правильно
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
uses crt;
type
    TDate = record
            day:1..31;
            month:1..12;
            year:1900..2100;
    end;
 
var
    a,b,c,e,f,m:integer;
    td,d:Tdate;
begin
writeln('vvedite sedneshnuu datu');
write('d: '); ReadLn (d.day);
write('m: '); readln (d.month);
write('y: '); readln (d.year);
writeln;
write('vvedite kol-vo dney = '); readln(m);
a:=m div 30;
b:=m div 365;
c:=m mod 30;
td.day:=d.day-c;
td.month:=d.month-a;
td.year:=d.year-b;
writeln('data bila ',td.day:2,'/',td.month:2,'/',td.year);
readkey;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2009, 08:20
Ответы с готовыми решениями:

Записи. Определить дату, которая была за m дней до сегодняшнего дня
Написать программу, определяющую дату, которая была за m дней до сегодняшнего дня

Написать функцию для получения и показа дней с сегодняшнего дня по дату:
Write code for get and show days from today to date: const date = new Date(2019, 10, 27); console.log(getDaysFromToday(date));...

Получить дату сегодняшнего дня
Помогите дописать код пожалуйста для Word: В ячейке B3 получить дату сегодняшнего дня, В ячейке B4 записать дату, когда количество...

10
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.06.2009, 09:13
Вообще, если такую задачу решать по уму, с учетом разного количества дней в масяцах, с учетом високосных годов, с проверкой правильности ввода, то это очень муторная и противная задача с очень длинным и запутанным кодом.
А если Вы берете в месяце по 30 дней, а в году по 365 дней, что в принципе не сойдется 12х30=360.
0
 Аватар для qwertytol
7 / 7 / 2
Регистрация: 20.02.2009
Сообщений: 116
12.06.2009, 15:38  [ТС]
Ну мне в принципе можно чтоб было по 30 дней в месяце и 360 в году. В этой программе и меня получается что если ввести число дней болеше чем 30 плюс кол-во дней сегодняшней даты, то выводит отрицательное число даты. как это можно исправить незнаю.
0
 Аватар для demidrolll
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
12.06.2009, 17:45
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
uses
  crt;
type
  data = record
    day: 1..31;
    mounth: 1..12;
    year: 1900..2100;
  end;
var
  i,j,m,x,y: integer;
  d: data;
  p: boolean;
begin
  clrscr;
  writeln('wwedite sedneshnuu datu');
  write('day: ');
  readln(d.day);
  write('mounth: ');
  readln(d.mounth);
  write('year: ');
  readln(d.year);
  writeln('wwedite kol-wo dney: ');
  readln(m);
  writeln('Tekuhaya data: ',d.day,'.',d.mounth,'.',d.year);
  x:=d.day;
  if d.year mod 4 = 0 then   {если год високосный}
    p:=true
  else
    p:=false;
  while m>0 do
  begin
    x:=d.day;
    if m>d.day then
    begin
      d.mounth:=d.mounth-1;
      if d.mounth=0 then
        d.year:=d.year-1;
      dec(m,x);
      case d.mounth of
        1,3,5,7,8,10,12: y:=31;
        4,6,9,11: y:=30;
        2: if p then
             y:=29
           else
             y:=28;
      end;
      d.day:=y;
    end
    else
    begin
      case d.mounth of
        1,3,5,7,8,10,12: y:=31;
        4,6,9,11: y:=30;
        2: if p then
             y:=29
           else
             y:=28;
      end;
      d.day:=d.day-m;
      dec(m,x);
    end;
  end;
  write('Poluchiwshayasya data: ',d.day,'.',d.mounth,'.',d.year);
  readkey;
end.
1
 Аватар для qwertytol
7 / 7 / 2
Регистрация: 20.02.2009
Сообщений: 116
12.06.2009, 20:47  [ТС]
demidrolll, спасибо тебе и поясни один момент:
Pascal
1
dec(m,x);
Что делает "dec"?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.06.2009, 20:50
dec(m,x) -> m:=m-x;
0
 Аватар для qwertytol
7 / 7 / 2
Регистрация: 20.02.2009
Сообщений: 116
15.06.2009, 19:08  [ТС]
А еще вопрос, а как решить похожую задачу, только в ней надо получить дату, которая наступит через m дней ????

Добавлено через 2 часа 9 минут 32 секунды
Плиз очень нужно до завтра
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
15.06.2009, 19:11
Все также, только наоборот.
0
 Аватар для qwertytol
7 / 7 / 2
Регистрация: 20.02.2009
Сообщений: 116
15.06.2009, 23:49  [ТС]
Наоборот пробовал,(+ на -), не считает дни >31 дня выводит
И что именно наоборот

Добавлено через 2 часа 5 минут 45 секунд


Добавлено через 2 часа 5 минут 57 секунд
0
1 / 1 / 1
Регистрация: 29.06.2012
Сообщений: 6
01.07.2012, 18:06
Данная программа написана НЕ ВЕРНО! так как: 1 - в ней не учитаны високосные года
2- она не правильно показывает результат (Например 2 ВОВ - 9.5.1945 - 2076 дней она показывает 64 месяц 1944 года)
1
 Аватар для demidrolll
133 / 132 / 60
Регистрация: 10.12.2008
Сообщений: 286
04.07.2012, 02:28
Спасибо за замечание, calibrio. Попробовал исправить:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
type
  date = record
    day: 1..31;
    mounth: 1..12;
    year: 1900..2100;
  end;
 
procedure ModifyDate(var d: date; days: integer);
var
  leapYear: boolean;
begin
  while (days > 0) do begin
    leapYear := ((d.year mod 4) = 0);
    if (days >= d.day) then begin
      d.mounth := d.mounth-1;
      days := days - d.day;
      if (d.mounth = 0) then begin
        d.year:=d.year-1;
        d.mounth := 12
      end;
      case d.mounth of
        1,3,5,7,8,10,12: d.day := 31;
        4,6,9,11: d.day := 30;
        2: if leapYear then
             d.day := 29
           else
             d.day := 28;
      end;
    end
    else begin
      d.day := d.day - days;
      days := 0
    end
  end
end;
 
var
  d: date;
begin
  d.day := 9; d.mounth := 5; d.year := 1945;
  write('Tekuhaya data: ',d.day,'.',d.mounth,'.',d.year);
  ModifyDate(d,2076);
  writeln(' Poluchiwshayasya data: ',d.day,'.',d.mounth,'.',d.year);
 
  d.day := 9; d.mounth := 5; d.year := 1945;
  write('Tekuhaya data: ',d.day,'.',d.mounth,'.',d.year);
  ModifyDate(d,9);
  writeln(' Poluchiwshayasya data: ',d.day,'.',d.mounth,'.',d.year);
 
  d.day := 9; d.mounth := 5; d.year := 1945;
  write('Tekuhaya data: ',d.day,'.',d.mounth,'.',d.year);
  ModifyDate(d,10);
  writeln(' Poluchiwshayasya data: ',d.day,'.',d.mounth,'.',d.year);
 
  d.day := 9; d.mounth := 5; d.year := 1945;
  write('Tekuhaya data: ',d.day,'.',d.mounth,'.',d.year);
  ModifyDate(d,20);
  writeln(' Poluchiwshayasya data: ',d.day,'.',d.mounth,'.',d.year);
 
  d.day := 9; d.mounth := 5; d.year := 1945;
  write('Tekuhaya data: ',d.day,'.',d.mounth,'.',d.year);
  ModifyDate(d,460);
  writeln(' Poluchiwshayasya data: ',d.day,'.',d.mounth,'.',d.year);
 
  readln;
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.07.2012, 02:28
Помогаю со студенческими работами здесь

вывод с клавиатуры вводится дата сегодняшнего дня. Разработать и реализовать алгоритм, выводящий дату завтрашнего дня
Вывод даты. С клавиатуры вводится дата сегодняшнего дня. Разработать и реализовать алгоритм, выводящий дату завтрашнего дня. (Обратите...

Сколько с сегодняшнего дня дней от рождества Христова?
помогите!

Ввести дату следующего (относительно сегодняшнего) дня
Добрый день...помогите пожалуйста сделать задание. Ввести дату следующего (относительно сегодняшнего) дня Заранее, огромное...

Как измерять количество дней с момента до сегодняшнего дня?
Здравствуйте! Программа выдает дату создания файла "2010-03-19T21:59:56" Задача программы - взять эту дату, взять сегодняшнюю и...

Подсчитать, сколько прошло лет, месяцев, дней, часов, минут со дня, указанного в полях и до сегодняшнего
<!DOCTYPE html> <html> <head> <meta charset="Windows-1251"> <title>Кнопка отправки формы</title> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru