помогите не пашет алгоритм по вычеслению прожитых дней... |
помогите не пашет алгоритм по вычеслению прожитых дней... |
prevedmuraved |
8.06.2010 23:43
Сообщение
#1
|
|||
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
не пойму чё ей не хватает...
program pr;
-------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
|||
volvo |
8.06.2010 23:55
Сообщение
#2
|
Гость |
Цитата чё ей не хватает... Как минимум - вызова процедуры (или более логичных действий по подсчету количества прожитых дней). Ну, ввел данные, что дальше? Где они используются?Кстати, о процедуре. А что в том файле хранится, можно открыть тайну? И почему матрица - именно размером 28*12? |
prevedmuraved |
9.06.2010 7:31
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
извините не тот фаил закачал.....
program pr; -------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
volvo |
9.06.2010 9:07
Сообщение
#4
|
Гость |
А теперь - по русски напиши тот алгоритм, который используется в программе. Только не надо опять увиливать и писать что-то другое. Не надо. Ты хочешь получить готовую работоспособную программу, прилагая свои усилия - поможем, но начинай прилагать: описывай алгоритм.
Хочешь получить программу, не прилагая усилий? "Бесплатных пирожных не бывает" (С) Перемещаемся в "Задачи на заказ" и готовь кошелек. |
prevedmuraved |
9.06.2010 9:23
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
Только не надо опять увиливать и писать что-то другое. Не надо. я не увиливою... (просто они у меня в разных папках с темеже именами) и тот и этот code должен расчитывать прожитые дни. Ты хочешь получить готовую работоспособную программу, прилагая свои усилия - поможем, но начинай прилагать: описывай алгоритм. этот алгоритм сделал я. но не поиму почему он показывает неправельные даты (результат на много больше чем надо ). А теперь - по русски напиши тот алгоритм, который используется в программе. вроде всё по руски... ткни ато я не вижу.. -------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
volvo |
9.06.2010 9:45
Сообщение
#6
|
Гость |
Цитата и тот и этот code должен расчитывать прожитые дни. Это - не алгоритм. Это - задача. Алгоритм - это детальное описание (повторяю, к компилятору вообще не лезь, расскажи на русском языке), как ты будешь делать эту задачу. Что надо найти для определения нужного тебе результата? Каким образом ты это ищешь? Почему именно так? (это к вопросу о високосности года, если что)И не надо мне предлагать разбираться в программе. Во-первых, это мне малоинтересно, тут с первого взгляда видно, что оно без капитальной переделки работать не будет. А во-вторых, пока у тебя не будет четкой последовательности действий - любые твои попытки написать программу обречены на провал. Ты себе и другим объяснить не можешь на том языке, который для тебя - родной, а хочешь объяснить компьютеру, на абсолютно чужом тебе языке? Не смеши... |
prevedmuraved |
9.06.2010 10:25
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
вычитываю из нынешнего года год рождения пользователя
потом умножаю на 365 дней потом проверяю есле год рождения високосный... есле да то добавляю 1 день потом добавляю все високосные ((нынешний год- год рождения) mod 4 ) -------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
volvo |
9.06.2010 11:35
Сообщение
#8
|
Гость |
Цитата вычитываю из нынешнего года год рождения пользователя И все? А если я родился 4-го мая 2009, а сегодня - 1 мая 2010, что будет?Вычитаем из 2010 (текущий год) 2009 (год рождения). = 1 Умножаем на 365 = 365. Год рождения - не високосный (а вот проверяешь ты это неправильно, недостаточно просто поделить на 4, это частичное решение), значит ничего не делаю. Между датами високосных нет, ничего не делаю. Итого ответ = 365? Неправда. 365 будет 4-го мая, а пока 361... Ты не учитываешь, какой день от начала года - дата рождения, а какое - текущая дата. Это тоже надо учитывать. Так что проблема у тебя с алгоритмом, я ж говорил... Исправляй, пиши опять описание, посмотрим, как тебе удастся справиться с этим. Программу пока не делай, только напиши словами... |
prevedmuraved |
10.06.2010 9:09
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
тогда нужно проверять:
* если месяц рождения > текущего --- тогда считаем дни от текущего до месяца рожд.-1 и вычитываем тек дату. * если месяц рождения < текущего --- тогда считаем дни от м.рождения до тек. месяца-1 добавляем тек. дату и вычитываем дату рождения -------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
TarasBer |
10.06.2010 9:41
Сообщение
#10
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Ладно, подскажу.
Удобнее перевести дату рождения и текущую дату в одно целое число типа longint, означающее, например, число дней с 1 января 00 года, вычесть, всё. То есть достаточно написать одну функцию DateToInt -------------------- |
prevedmuraved |
10.06.2010 9:52
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
Удобнее перевести дату рождения и текущую дату в одно целое число типа longint, означающее, например, число дней с 1 января 00 года, вычесть, всё. То есть достаточно написать одну функцию DateToInt а можно по подробнее а то я чёт не понял... -------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
Lapp |
10.06.2010 10:02
Сообщение
#12
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
а можно по подробнее а то я чёт не понял... Ну, чего тут непонятного? Считаем все в днях от Рождества Христова.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
prevedmuraved |
10.06.2010 10:22
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
Считаем все в днях от Рождества Христова. ааа... ну или с дня рождения... Сообщение отредактировано: prevedmuraved - 10.06.2010 10:23 -------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
Lapp |
10.06.2010 23:41
Сообщение
#14
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
ааа... ну или с дня рождения... Если ты делаешь прогу для всех, а не для одного избранного человека, то нужна какая-то универсальность.. Выбери какой-нибудь момент (например, 1 января 1900г.) - и от него все считай. С нулевым годом действительно есть проблемы (точный учет високосных годов), так что лучше ограничить себя - сто лет достаточно..А вообще - лучше не изобретать велосипед, а взять готовую формулу. Есть библиотеки для работы с датами. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
11.06.2010 9:26
Сообщение
#15
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
ааа... ну или с дня рождения... Со дня рождения очень неудобно считать, об этом тебе и талдычат. Возьми в качестве отправной точки удобную дату. Но 1900 год тоже не самый вариант, посколько он невисокосен, хотя косит под високосность. Из-за этого целая история случилась при написании Ворда при попытке сделать совместимость с форматами какого-то древнего редактора. -------------------- |
prevedmuraved |
18.06.2010 12:04
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: pavel Репутация: 0 |
всё можно закрывать тему...
пасиба за помощь... Код {$N+} program pr; uses crt,dos; var dn,ln,an:word; ac,lc,dc,zc:word; sec:longint; function cl(luna:word):integer; begin case luna of 1 : cl:=31; 2 : cl:=28; 3 : cl:=31; 4 : cl:=30; 5 : cl:=31; 6 : cl:=30; 7 : cl:=31; 8 : cl:=31; 9 : cl:=30; 10 : cl:=31; 11 : cl:=30; 12 : cl:=31; end; end; function days(dd,ll,aa:word):integer; var i,dsc:integer; begin dsc:=0; if ln>lc then begin for i:=1 to lc-1 do dsc:=dsc+cl(i); for i:=ln to 12 do dsc:=dsc+cl(i); end else if ln<lc then begin for i:=ln to lc-1 do dsc:=dsc+cl(i); end; days:=(dsc-dn+dc)+((ac-aa-1)*365)+((ac-aa)div 4); end; begin clrscr; getdate(ac,lc,dc,zc); writeln('segodnea ',dc:5,lc:5,ac:11); writeln('dd mm gggg '); readln(dn,ln,an); sec:=days(dn,ln,an)*3660; writeln('you are :'); writeln(days(dn,ln,an), ' days old'); writeln(days(dn,ln,an)*24,' hours old '); writeln(days(dn,ln,an)*1440,' min old '); writeln(sec,' sec old '); end. -------------------- Жизнь хитра - когда у меня на руках все карты,
она внезапно решает играть в шахматы. |
Текстовая версия | 28.04.2024 15:21 |