Паскаль: сравнение версий, глюки и т.п.
Делали мы на практике какую-то программулину несложную, шло все не то, что бы легко, но и без особых сложностей. Проверяем ответ - моя писанина выводит 4, у старосты с тем же тестом - 0. Внимательно сравниваем, ничего не поймем - все одно. Уже и руководитель посмотрел - диву дался, на ровном месте обнуляет переменную и все.. Дали мне задание разобраться, хоть кровь из носу. Сажусь, открываю два окна, форматирую все под себя, даже переменные по-своему переименовал. И тут замечаю, что типы целый и вещественный описаны у нас в разном порядке. Меняю, тестирую.. Толи лыжи не едут, толи я чего-то не понимаю - прога выдает правильный ответ. Меняю местами типы в своем коде - ответ неправильный. В общем, от порядка описания типов зависел результат. До сих пор понять этого не можем. Если получится, найду на днях это чудо, покажу.
|
Цитата:
P.S. А со строками - если напорюсь, тоже напишу. |
Насчет строк.
Тонкость состоит в том, что строка, хоть формально и эквивалентна массиву символов, да не совсем. Строку мало объявить, нужно ее еще и в некотором роде инициализировать. Поясню на примере. Допустим, я хочу получить строку, содержащую все строчные латинские буквы в алфавитном порядке, и вывести эту строку на экран. Так вот, такая программа не пойдет: Код:
VAR А зато такая - пожалуйста: Код:
VAR Код:
VAR Вот еще пример корректного решения: Код:
CONST |
Чудеса, да и только
|
Если не ошибаюсь, строковые величины определяются как динамические массивы. Из-за разных тонкостей динамического обращения к памяти и возникают такие ситуации.
|
Обсуждается программа "Электронные часы":
Код:
Uses Crt,Dos; Оказывается (а я и не знал), Pascal-ABC не поддерживает модуля DOS и, соответственно, процедуру GetTime. А есть ли там возможность считывания системного времени, и если есть, то как? |
Не знаю про абс паскаль. Нас ему не учили, но мы на своем опыте убедились в его ущербности. Вам обязательно нужен только АВС?
|
Вложений: 1
Цитата:
Вложение 27436По поводу ABC, хоть в глаза его не видел, но по тому судя, что о нем читал - полностью согласен с оценкой! Какой-то невразумительный гибрид, ни с чем толком не совместимый. Зачем-то графика туда ущербно-дельфийская всунута, модуль DOS не поддерживается и вообще. |
Цитата:
Можно так сделать: uses Utils,Crt; type DateTime=record Day,Month,Year,Hour,Minute,Second,Milliseconds:int eger; end; var time: DateTime; (убрать пробел, с пробелом вылазит смайлик) begin HideCursor; repeat time:=CurrentDateTime; write('C начала работы программы прошло: ',Milliseconds div 1000,' сек. Дата: ',time.year,'.',time.month,'.', time.day,' Время: ',time.hour,':',time.minute,':',time.second,':',ti me.Milliseconds div 100); GotoXY(1,1) until 1<0 end. Честно говорю - программа не моя. Но как видно там есть еще секундомер с начала работы программы. |
Да понятно, я к автору темы и обратился :) а вот если перенести файл Dos из простого паскаля в ABC? Володь, прилепи-ка сюда свой, поэкспериментируем :))
|
Часовой пояс GMT +4, время: 06:13. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.