Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.66.149] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Всем программистам привет! Respect! В общем есть достаточно простая задачка: реализовать два метода сортировки и провести их экспериметнальное сравнение(пузырек и Шелла). Но также есть условие, что в качестве элементов массива использовать даты типа 26.11.94, 9.5.00 и т. д. Как понял в турбо паскале типа данных "дата" нет? Каким образом можно будет получать значения(т е в виде даты) при помощи random? Нужно допустим 3 переменных: i, j, k(i - число[1..31] , j - месяц[1..12], k - двадцатый век[0..99]). Но уже здесь есть нюанс, т к можно сгенерировать не существующую дату(например 31 февраля и т. п.), что думаю не есть хорошо. Затем так например:
i := random(31) + 1; j := rabdom(12) + 1; k := random(100); затем: str(j, str_j); str(k, str_k); value := str_i + '.' + str_j + '.' + str_k; |
Сообщ.
#2
,
|
|
|
Цитата FasterHarder @ Неужели как то по другому дату нельзя получить? Подскажите как быть то? как вариант, получай даты создания файлов а вообще в твоем варианте генерации ошибка - не учитывается что в разных месяцах разное число дней (и не забывай про високосный год) |
Сообщ.
#3
,
|
|
|
Цитата а вообще в твоем варианте генерации ошибка - не учитывается что в разных месяцах разное число дней (и не забывай про високосный год) в этом тоже есть проблема, хотя эту проблему легко решить, если генерировать число максимум в 28 дней? Как я думаю, в данной задаче не должно быть жесткой привязки к корректности даты, главное ведь правильно отсортировать и сравнить? Цитата как вариант, получай даты создания файлов каких файлов? немного мысль не уловил и как? |
Сообщ.
#4
,
|
|
|
const days: array[1 .. 12] of integer = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); var D, M, C: integer; begin M := random(12) + 1; D := random(days[M]) + 1; C := random(100); end. Можно легко добавить проверку високосности года, но поскольку у тебя работа с веком - я не стал этого делать... |
Сообщ.
#5
,
|
|
|
Цитата FasterHarder @ каких файлов? немного мысль не уловил и как? ну пройдись, к примеру, по корневой директории и считай даты создания/модифкации реальных файлов. |
Сообщ.
#6
,
|
|
|
чтобы отловить високосный год, необходимо впервую очередь получить год:
yera := random(100); затем проверить такое условие: if( (year = 0) or (year mod 4 = 0) ) then {2000, 1996, 92 были високосными :) } begin days[2] := days[2] + 1; M := random(12) + 1; D := random(days[M]) + 1; days[2] := days[2] - 1; {вернули обратно} end else begin M := random(12) + 1; D := random(days[M]) + 1; end; вроде б так? |
Сообщ.
#7
,
|
|
|
Специально для тех, кому КАЖДЫЙ раз хочется написать свой велосипед:
Является-ли год високосный ? (сообщение #580048) Учи матчасть - то, что ты сделал - не является проверкой на високосность... Программа поменяется вот так: days[2] := 28; Y := 1900 + random(100); Inc(days[2], Byte(bsYear(Y))); M := random(12) + 1; D := random(days[M]) + 1; |
Сообщ.
#8
,
|
|
|
thank's volvo877 за просвещение и всем кто подсказывал.
|
Сообщ.
#9
,
|
|
|
Цитата Как понял в турбо паскале типа данных "дата" нет? Ну вобще-то есть, TDateTime (type) (WinDos unit) |
Сообщ.
#10
,
|
|
|
я работаю под дос.
|
Сообщ.
#11
,
|
|
|
Цитата FasterHarder @ я работаю под дос. Тоже есть. DateTime - Модуль DOS |
Сообщ.
#12
,
|
|
|
Цитата Тоже есть. DateTime - Модуль DOS хм, а вот это уже интересно. |
Сообщ.
#13
,
|
|
|
Дайте плиз кто нибудь хорошую ссылку на описание полного анализа метода сортировки Шелла. В инете я прокопался 3 часа, поднял тучу сайтов, но так до конца и не понял, как она работает ,(точнее понял но не все нюансы) как делается првильное разбиение на поддиапазоны и т. д. Везде сказано, что в основе лежит метод вставок, с ним я разобрался идеально. Подскажите как быть то?
P.S. естесно нашел в нашем факе этот метод, но это вообще копец, вложенные until с условием на not. Код работает исправно, но без коментов и разбираться достаточно долго. Также в факе когда изучал метод пузырька, то сразу не понял(т к все через until), нашел реализацию через for, все стало очень понятно + меньше на одну переменную юзается, поэтому фак не предлагать, был я там . |
Сообщ.
#14
,
|
|
|
неужели никто не подскажет по сортировки шелла?
|
Сообщ.
#15
,
|
|
|
up
|