помогите!, паскаль |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
помогите!, паскаль |
T@ty@n@ |
Сообщение
#1
|
Гость |
М может кто занет как решать эти задачи, а то зачет не могу сдать.
1. дано натуральное к.напечатать к-ю цифру последовательности 12345678910111213, в которой выписаны подряд все натуральные числа. 2. дан текст.определить является ли он правильной десятичной записью целого числа. Сообщение отредактировано: T@ty@n@ - |
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Мой вариант первой задачи:
function DigitInfo(const k: LongInt): Char; T@ty@n@ Переименуй название темы ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
hardcase |
Сообщение
#3
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Мой вариант первой задачи: А это мой. Только целочисленная арифметика и никаких str. Код function GetDigit(k: integer): integer; var counter: integer; // счетчик натуральных чисел number: integer; // текущее разбираемое число needNewNumber: boolean; // флаг - "завершился ли разбор числа?" maxDecimalMask: integer; // максимальная маска десятичного разряда nextDecimalMask: integer; // maxDecimalMask * 10 decimalMask: integer; // текущая маска десятичного разряда procedure Init; begin counter := 0; maxDecimalMask := 1; nextDecimalMask := maxDecimalMask * 10; needNewNumber := true; end; function GetNextDigit: integer; var digit: integer; begin // получаем следующее натуральное число if needNewNumber then begin needNewNumber := false; inc(counter); number := counter; if (counter mod nextDecimalMask) = 0 then begin maxDecimalMask := nextDecimalMask; nextDecimalMask := maxDecimalMask * 10; end; // сбрасываем маску decimalMask := maxDecimalMask; end; // получаем число в разряде digit := number div decimalMask; number := number mod decimalMask; decimalMask := decimalMask div 10; // если маска нулевая, то мы разобрали число if decimalMask = 0 then needNewNumber := true; // возвращаем результат GetNextDigit := digit; end; var i: integer; digit: integer; begin Init; // тупо перебираем k-разрядов digit := 0; for i := 1 to k do digit := GetNextDigit; // возращаем результат GetDigit := digit; end; но с инвариантом ессно красивше получается. Сообщение отредактировано: hardcase - -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
Текстовая версия | 6.05.2024 12:37 |