Автор | Сообщение |
|
| постоянный участник
|
Сообщение: 18
|
|
Отправлено: 21.03.12 14:11. Заголовок: [C4] задача 30
В решении этой задачи 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
[только новые]
|
|
|
| Администратор
|
Сообщение: 193
|
|
Отправлено: 21.03.12 15:52. Заголовок: oval пишет: Val(Copy..
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); |
|
Это не везде сработает, хотя, конечно, более красиво.
|
|
|
|
| постоянный участник
|
Сообщение: 21
|
|
Отправлено: 21.03.12 20:05. Заголовок: Поляков пишет: В ка..
Поляков пишет: цитата: | В какой среде у вас не сработало? Я только что проверил в Pascal ABC - все нормально. |
| В ABC и не сработало, скорей всего проблема в том, что использовалось чтение из файла.
|
|
|
|
| Администратор
|
Сообщение: 198
|
|
Отправлено: 21.03.12 20:59. Заголовок: oval пишет: В ABC и ..
oval пишет: Спасибо, понял. Это особенность именно Паскаля ABC и именно при работе с консолью. Переделал так, чтобы работало везде - строка разбирается вручную (Pos, Val, Delete).
|
|
|
|
| постоянный участник
|
Сообщение: 22
|
|
Отправлено: 21.03.12 21:26. Заголовок: Поляков пишет: ма..
Поляков пишет: цитата: | 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 это работает, хотя, конечно, в описании Паскаля Виртом типизированных констант нет
|
|
|
|
| Администратор
|
Сообщение: 200
|
|
Отправлено: 21.03.12 21:51. Заголовок: oval пишет: в FPC2...
oval пишет: цитата: | в FPC2.4.4 BP7.0 TP7.1 и ABC это работает |
|
В АЛГО не работает.
|
|
|
|
| постоянный участник
|
Сообщение: 25
|
|
Отправлено: 25.03.12 20:04. Заголовок: день (ровно две цифр..
цитата: | день (ровно две цифры, от 01 до 31), затем через точку – месяц (ровно две цифры, от 01 до 12) |
| Если формат даты задается через точку, то можно день и месяц получить так: цитата: | var r:real; d,m:integer; begin readln(r); d:=trunc(r); m:=round((r-d)*100); ............... end. |
|
|
|
|
|
| Администратор
|
Сообщение: 217
|
|
Отправлено: 25.03.12 20:07. Заголовок: oval пишет: можно де..
oval пишет: цитата: | можно день и месяц получить так: |
|
Нехорошо сюда еще и real примешивать.
|
|
|
|
| постоянный участник
|
Сообщение: 26
|
|
Отправлено: 26.03.12 09:14. Заголовок: почему примешивать ч..
почему примешивать читаем в строке целое число и вещественное, и вещественное переводим день и месяц или читаем целое число и строку и строку переводим в день и месяц, с учетом того, что строку еще разобрать надо..... я не вижу большой разницы, просто рассматривайте как вариант решения
|
|
|
|
| Администратор
|
Сообщение: 218
|
|
Отправлено: 26.03.12 12:16. Заголовок: oval пишет: веществе..
oval пишет: цитата: | вещественное переводим день и месяц |
|
Это нехороший подход. Чтобы прочитать данные одного типа, мы читаем данные другого типа, а потом их преобразовываем. Не говоря уже о том, что real в большинстве случаев хранится в памяти с ошибкой. Правда, эту проблему здесь решает round, но все равно это очень некрасиво. "Грязный хак".
|
|
|
|