LINUX.ORG.RU
ФорумTalks

Начинаем обратный отсчёт до 2020-го года

 , ,


0

1

Сабж. А поможет в этом эта программа:

program timeto2020;
{$codepage utf8}
uses cwstring, sysutils, dateutils;
var
        nowtime, thentime, timediff: int64;
        ttdays, tthours, ttminutes, ttseconds: int64;
begin
        nowtime := datetimetounix(now);
        thentime := datetimetounix(encodedate(2020, 1, 1));
        timediff := thentime - nowtime;
        ttdays := timediff div 86400;
        dec(timediff, ttdays * 86400);
        tthours := timediff div 3600;
        dec(timediff, tthours * 3600);
        ttminutes := timediff div 60;
        dec(timediff, ttminutes * 60);
        ttseconds := timediff;
        writeln('до 2020 года осталось ', ttdays, ' дней, ', tthours, ' часов, ',
                ttminutes, ' минут и ', ttseconds, ' секунд.');
end.

$ ./timeto2020
до 2020 года осталось 59 дней, 11 часов, 4 минут и 28 секунд.

★★★★★

Код на Паскале сам по себе так говняво выглядит, или ты это такой виртуоз?

Deleted
()
Ответ на: комментарий от Deleted

Я видел код этой игры для VB6. На две страницы A4.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Хм, действительно. Печально думать, что мировое IT не имело такой нужной и ценной программы.

Предлагаю ещё ряд ценных и нужных программ для воплощения на Паскале:

лунный календарь народности Тупайя
утилита для подсчёта чиханий
база данных катышек на свитере
напоминалка о подстригании ногтей
хранилище изображений дырок на носках
навигатор по подвалу дома №17 ПГТ Великодырск
менеджер вилок на домашней кухне
клиент для скачивания песен Иванушек Интернешнл

Deleted
()

А текстовый квест с ascii - интерфейсом, который можно играть в «ядерной консоли» сделать сможете?

Leupold_cat ★★★★★
()

А вот это более универсальный вариант, который считает время не до конкретного года, а до следующего:

program timetonextyear;
{$codepage utf8}
uses cwstring, sysutils, dateutils;
var
        nowtime, thentime, timediff: int64;
        ttdays, tthours, ttminutes, ttseconds: int64;
        syear, smonth, sday: word;
begin
        decodedate(now, syear, smonth, sday);
        inc(syear);
        nowtime := datetimetounix(now);
        thentime := datetimetounix(encodedate(syear, 1, 1));
        timediff := thentime - nowtime;
        ttdays := timediff div 86400;
        dec(timediff, ttdays * 86400);
        tthours := timediff div 3600;
        dec(timediff, tthours * 3600);
        ttminutes := timediff div 60;
        dec(timediff, ttminutes * 60);
        ttseconds := timediff;
        writeln('до ', syear, ' года осталось ', ttdays, ' дней, ', tthours, ' часов, ',
                ttminutes, ' минут и ', ttseconds, ' секунд.');
end.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)

Ты боишься, что лоровцы пропустят или думаешь, что этот код показывает выразительность паскаля?

seiken ★★★★★
()

Не вижу указания лицензии, без неё код по дефолту проприетарщина, нам даже смотреть на него нежелательно, поэтому оффтоп, язабан.

Harald ★★★★★
()

до 2100 года осталось 29279 дней, 3 часов, 11 минут и 17 секунд. )))

record ★★★★★
()

Ты набухался что-ли уже по поводу грядущего НГ?

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от Nervous

Эта народность состоит исключительно из девушек.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

напоминалка о подстригании ногтей

Я тут слышал, что людей, тяготеющих к паскалю, больше беспокоят волосы в ушах.

Nervous ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Что Вы как не программист? Пишите нехеллоуворды на работе, никто Вам не запрещает.

(Собственно, по этой причине я за продвижение термина «хакер». Хакеры любят программировать, а потому радуются любым однострочникам, поскольку размер программы в байтах не важен. И даже наоборот, - чем больше получилось сократить программу и чем меньше она жрёт ресурсов - тем лучше.)

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от record

Разве теперь utf8 не по умолчанию?

Вообще, да, по умолчанию.

saahriktu ★★★★★
() автор топика

У вас единицы измерения не склоняются — не зачет. Должно быть: «до 2020 года осталось 52 дня, 3 часа, 1 минута и 33 секунды»

Deleted
()

ttdays := timediff div 86400;
dec(timediff, tthours * 3600);

Какая неконсистентность!

EXL ★★★★★
()
Ответ на: комментарий от saahriktu

поскольку размер программы в байтах не важен

Важна польза от программы, которая у сабжа нулевая. Именно по этому критерию это школоло хеллоуворд.

WitcherGeralt ★★
()
Ответ на: комментарий от saahriktu

Учение Столлмана велит указывать лицензию в начале каждого файла с исходными кодами, для избежания недоразумений

Harald ★★★★★
()

Куда резоннее спросить зачем ТС хочет знать сколько дней осталось до 2020го? Может радуется поводу накатить, но он, судя по постам, и так не просыхает.

ptarh ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Важна польза от программы, которая у сабжа нулевая

Кому как. Никто же не запрещал тем, кому она ненужна, проходить мимо.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

И что? Ничего такого я в нём не видел.

saahriktu ★★★★★
() автор топика

Не благодари.

#!/usr/bin/env python3

from datetime import datetime

print(datetime(2020, 1, 1, 0, 0, 0) - datetime.now())
# 59 days, 9:45:05.901267
RazrFalcon ★★★★★
()
Ответ на: комментарий от Deleted

Нет, несложно. Просто не всем нужно. Но при необходимости можно и допилить:

program timetonextyear2;
{$codepage utf8}
uses cwstring, sysutils, dateutils;
const
	alltimesspells: array[0..11] of unicodestring = (
		'день',
		'дня',
		'дней',
		'час',
		'часа',
		'часов',
		'минута',
		'минуты',
		'минут',
		'секунда',
		'секунды',
		'секунд');
var
	nowtime, thentime, timediff: int64;
	ttdays, tthours, ttminutes, ttseconds: int64;
	syear, smonth, sday: word;

function gettimespell(tval: int64; totswitch: integer): unicodestring;
var
	lstdgt: Integer;
begin
	lstdgt := tval mod 10;
	case (lstdgt) of
	1: gettimespell := alltimesspells[3 * totswitch];
	2 .. 4: gettimespell := alltimesspells[3 * totswitch + 1];
	else gettimespell := alltimesspells[3 * totswitch + 2];
	end;
end;

begin
	decodedate(now, syear, smonth, sday);
	inc(syear);
	nowtime := datetimetounix(now);
	thentime := datetimetounix(encodedate(syear, 1, 1));
	timediff := thentime - nowtime;
	ttdays := timediff div 86400;
	dec(timediff, ttdays * 86400);
	tthours := timediff div 3600;
	dec(timediff, tthours * 3600);
	ttminutes := timediff div 60;
	dec(timediff, ttminutes * 60);
	ttseconds := timediff;
	writeln('До ', syear, ' года осталось ', ttdays, ' ',
		gettimespell(ttdays, 0) ,', ',
		tthours, ' ', gettimespell(tthours, 1), ', ',
		ttminutes, ' ', gettimespell(ttminutes, 2),' и ',
		ttseconds, ' ', gettimespell(ttseconds, 3), '.');
end.
$ ./timetonextyear2
До 2020 года осталось 59 дней, 8 часов, 22 минуты и 43 секунды.

saahriktu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.