Форум » Обработка числовых последовательностей » [C4] задача 30 » Ответить

[C4] задача 30

oval: В решении этой задачи 2 ошибки. 1. После прочтения номера ячейки в строке остается пробел+дата, либо пробел надо удалять, либо в функции dayFromStart писать Val(Copy(s,2,2), d, i); Val(Copy(s,5,2), m, i); 2. В выводе надо печатать до count и на мой взгляд массив dm проще объявить как const dm : array[1..12]of integer=(31,28,31,30,31,30,31,31,30,31,30,31); хотя так, как у вас сделано тоже нормально.

Ответов - 9

Поляков: oval пишет: Val(Copy(s,2,2), d, i); Val(Copy(s,5,2), m, i); Нет. В какой среде у вас не сработало? Я только что проверил в Pascal ABC - все нормально.2. В выводе надо печатать до count Да, это опечатка, поправлю. массив dm проще объявить как const dm : array[1..12]of integer=(31,28,31,30,31,30,31,31,30,31,30,31); Это не везде сработает, хотя, конечно, более красиво.

oval: Поляков пишет: В какой среде у вас не сработало? Я только что проверил в Pascal ABC - все нормально. В ABC и не сработало, скорей всего проблема в том, что использовалось чтение из файла.

Поляков: oval пишет: В ABC и не сработало, Спасибо, понял. Это особенность именно Паскаля ABC и именно при работе с консолью. Переделал так, чтобы работало везде - строка разбирается вручную (Pos, Val, Delete).


oval: Поляков пишет: const dm : array[1..12]of integer=(31,28,31,30,31,30,31,31,30,31,30,31); Это не везде сработает, хотя, конечно, более красиво. Не проверяла в Lazars и Delphi, а в FPC2.4.4 BP7.0 TP7.1 и ABC это работает, хотя, конечно, в описании Паскаля Виртом типизированных констант нет

Поляков: oval пишет: в FPC2.4.4 BP7.0 TP7.1 и ABC это работает В АЛГО не работает.

oval: день (ровно две цифры, от 01 до 31), затем через точку – месяц (ровно две цифры, от 01 до 12) Если формат даты задается через точку, то можно день и месяц получить так:var r:real; d,m:integer; begin readln(r); d:=trunc(r); m:=round((r-d)*100); ............... end.

Поляков: oval пишет: можно день и месяц получить так: Нехорошо сюда еще и real примешивать.

oval: почему примешивать читаем в строке целое число и вещественное, и вещественное переводим день и месяц или читаем целое число и строку и строку переводим в день и месяц, с учетом того, что строку еще разобрать надо..... я не вижу большой разницы, просто рассматривайте как вариант решения

Поляков: oval пишет: вещественное переводим день и месяц Это нехороший подход. Чтобы прочитать данные одного типа, мы читаем данные другого типа, а потом их преобразовываем. Не говоря уже о том, что real в большинстве случаев хранится в памяти с ошибкой. Правда, эту проблему здесь решает round, но все равно это очень некрасиво. "Грязный хак".



полная версия страницы