На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Не зарегистрирован
ссылка на сообщение  Отправлено: 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.

Спасибо: 0 
Цитата Ответить
Ответов - 8 [только новые]


Администратор




Сообщение: 548
ссылка на сообщение  Отправлено: 27.04.13 21:02. Заголовок: 1. Докажите, что оно..


1. Докажите, что оно правильное.
2. Докажите, что оно эффективнее.
3. Докажите, что можно без массивов.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 27.04.13 21:20. Заголовок: Поляков пишет: 1. Д..


Поляков пишет:

 цитата:
1. Докажите, что оно правильное.
2. Докажите, что оно эффективнее.
3. Докажите, что можно без массивов.


Правильное, потому что протестировала на разных вариантах и результат был верный. Эффективнее, потому что вся информация проверяется прямо на входе и номера нужных ячеек выводятся сразу же. Т.е. информацию можно не хранить.

Спасибо: 0 
Цитата Ответить
Администратор




Сообщение: 549
ссылка на сообщение  Отправлено: 27.04.13 22:10. Заголовок: Анна пишет: Правильн..


Анна пишет:
 цитата:
Правильное, потому что протестировала на разных вариантах и результат был верный.

Тесты, как известно, не могут доказать правильность программы и алгоритма. Они могут только показать, что программа работает неверно. Поэтому вопрос был не о том.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 28.04.13 16:45. Заголовок: Поляков пишет: Тест..


Поляков пишет:

 цитата:
Тесты, как известно, не могут доказать правильность программы и алгоритма


Тогда я не знаю, как еще доказать. Можно описать принцип работы программы.

Спасибо: 0 
Цитата Ответить
Администратор




Сообщение: 550
ссылка на сообщение  Отправлено: 28.04.13 16:54. Заголовок: Анна пишет: Тогда я ..


Анна пишет:
 цитата:
Тогда я не знаю, как еще доказать.

Рассуждениями. Возможны такие-то и такие-то варианты. Других вариантов быть не может. Алгоритм следующий... В этом варианте он сработает так, в этом - так... Таким образом, во всех возможных вариантах алгоритм выдает правильный ответ.

Где может быть ошибка:
1) вы не учли какой-то вариант исходных данных, который возможен по условию
2) ваш алгоритм работает не так, как нужно, в каком-то варианте.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 29.04.13 18:15. Заголовок: Поляков пишет: Расс..


Поляков пишет:

 цитата:
Рассуждениями.


Хорошо. Сначала программа считывает текущую дату в две переменные - месяц и день. Затем считывает количество N. В Цикле от 1 до N она считывает дату сдачи багажа. Далее возможны 3 варианта:
1. Месяц даты сдачи багажа равен текущему.
2. Месяц даты сдачи багажа - предыдущий.
3. Месяц даты сдачи багажа отличается от текущего более чем на один.
4й вариант, в котором месяц больше текущего, не рассматривается.
Что делает программа: в первом случае она просто сравнивает дни дат. Если их разность больше трех, то выводит номер багажа.
Во втором случае проверяет, больше ли трех сумма текущей даты и числа дней от даты сдачи багажа до конца предыдущего месяца. То есть, программа работает по условной формуле: I+(N-K), где I - текущий день, N - число дней в предыдущем месяце (записано через оператор case), К - день даты сдачи багажа.
В третьем случае можно автоматически вывести номер багажа.

Спасибо: 0 
Цитата Ответить
Администратор




Сообщение: 552
ссылка на сообщение  Отправлено: 29.04.13 19:42. Заголовок: Как вы добиваетесь в..


Как вы добиваетесь выполнения строки условия "Нужно вывести номера тех ячеек, в которых багаж хранится более 3 дней в хронологическом порядке сдачи багажа."? Номер ячейки, которая должна выводиться первой, может быть очень далеко от начала списка.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 29.04.13 19:48. Заголовок: Поляков пишет: в хр..


Поляков пишет:

 цитата:
в хронологическом порядке сдачи багажа.


Все, теперь поняла ошибку. Я думала, эта фраза к другому относится.

Спасибо: 0 
Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 2655
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет