Автор | Сообщение |
|
Отправлено: 27.04.13 20:50. Заголовок: C4 30
Предлагаю такое решение задачи С4-30, более эффективное, без массивов. Оно правильное? program demo_C4; var i,j,N,id,dn,month,date,monthR,dateR:integer; simv,simv1:char; begin i:=0; j:=0; N:=0; dn:=0; monthR:=0; dateR:=0; read(simv,simv1); dateR:=10*(ord(simv)-ord('0'))+(ord(simv1)-ord('0')); read(simv); read(simv,simv1); monthR:=10*(ord(simv)-ord('0'))+(ord(simv1)-ord('0')); Readln(N); for i:=1 to N do begin Read(id); read(simv); month:=0; date:=0; read(simv,simv1); date:=10*(ord(simv)-ord('0'))+(ord(simv1)-ord('0')); read(simv); read(simv,simv1); month:=10*(ord(simv)-ord('0'))+(ord(simv1)-ord('0')); case month of 1,3,5,7,8,10,12:dn:=31; 2:dn:=28; 4,6,9,11:dn:=30; end; if month=monthR then begin if (dateR-date)>3 then writeln(id); end else if month+1=monthR then begin if (dateR+dn-date)>3 then writeln(id); end else if month<monthR then writeln(id); end; end.
|
|
|
Ответов - 8
[только новые]
|
|
|
| Администратор
|
Сообщение: 548
|
|
Отправлено: 27.04.13 21:02. Заголовок: 1. Докажите, что оно..
1. Докажите, что оно правильное. 2. Докажите, что оно эффективнее. 3. Докажите, что можно без массивов.
|
|
|
|
Отправлено: 27.04.13 21:20. Заголовок: Поляков пишет: 1. Д..
Поляков пишет: цитата: | 1. Докажите, что оно правильное. 2. Докажите, что оно эффективнее. 3. Докажите, что можно без массивов. |
| Правильное, потому что протестировала на разных вариантах и результат был верный. Эффективнее, потому что вся информация проверяется прямо на входе и номера нужных ячеек выводятся сразу же. Т.е. информацию можно не хранить.
|
|
|
|
| Администратор
|
Сообщение: 549
|
|
Отправлено: 27.04.13 22:10. Заголовок: Анна пишет: Правильн..
Анна пишет: цитата: | Правильное, потому что протестировала на разных вариантах и результат был верный. |
|
Тесты, как известно, не могут доказать правильность программы и алгоритма. Они могут только показать, что программа работает неверно. Поэтому вопрос был не о том.
|
|
|
|
Отправлено: 28.04.13 16:45. Заголовок: Поляков пишет: Тест..
Поляков пишет: цитата: | Тесты, как известно, не могут доказать правильность программы и алгоритма |
| Тогда я не знаю, как еще доказать. Можно описать принцип работы программы.
|
|
|
|
| Администратор
|
Сообщение: 550
|
|
Отправлено: 28.04.13 16:54. Заголовок: Анна пишет: Тогда я ..
Анна пишет: цитата: | Тогда я не знаю, как еще доказать. |
|
Рассуждениями. Возможны такие-то и такие-то варианты. Других вариантов быть не может. Алгоритм следующий... В этом варианте он сработает так, в этом - так... Таким образом, во всех возможных вариантах алгоритм выдает правильный ответ. Где может быть ошибка: 1) вы не учли какой-то вариант исходных данных, который возможен по условию 2) ваш алгоритм работает не так, как нужно, в каком-то варианте.
|
|
|
|
Отправлено: 29.04.13 18:15. Заголовок: Поляков пишет: Расс..
Поляков пишет: Хорошо. Сначала программа считывает текущую дату в две переменные - месяц и день. Затем считывает количество N. В Цикле от 1 до N она считывает дату сдачи багажа. Далее возможны 3 варианта: 1. Месяц даты сдачи багажа равен текущему. 2. Месяц даты сдачи багажа - предыдущий. 3. Месяц даты сдачи багажа отличается от текущего более чем на один. 4й вариант, в котором месяц больше текущего, не рассматривается. Что делает программа: в первом случае она просто сравнивает дни дат. Если их разность больше трех, то выводит номер багажа. Во втором случае проверяет, больше ли трех сумма текущей даты и числа дней от даты сдачи багажа до конца предыдущего месяца. То есть, программа работает по условной формуле: I+(N-K), где I - текущий день, N - число дней в предыдущем месяце (записано через оператор case), К - день даты сдачи багажа. В третьем случае можно автоматически вывести номер багажа.
|
|
|
|
| Администратор
|
Сообщение: 552
|
|
Отправлено: 29.04.13 19:42. Заголовок: Как вы добиваетесь в..
Как вы добиваетесь выполнения строки условия "Нужно вывести номера тех ячеек, в которых багаж хранится более 3 дней в хронологическом порядке сдачи багажа."? Номер ячейки, которая должна выводиться первой, может быть очень далеко от начала списка.
|
|
|
|
Отправлено: 29.04.13 19:48. Заголовок: Поляков пишет: в хр..
Поляков пишет: цитата: | в хронологическом порядке сдачи багажа. |
| Все, теперь поняла ошибку. Я думала, эта фраза к другому относится.
|
|
|
|