![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
-Chester- |
![]()
Сообщение
#1
|
Гость ![]() |
Друг попросил помочь, а я, мягко говоря, в программировании не силен
![]() Если не трудно, помогите пожалуйста... Не дайте, так сказать ударить в грязь лицом... ЗАДАЧА 1: Перевести число, представленное в системе счисления с основанием S, в системы счисления с основаниями P, Q, R. Обеспечить корректность ввода числа в системе счисления с основанием S. Перевод чисел реализовать с применением функций. (Разработайте функцию для перевода числа из системы счисления с основанием S в систему счисления с основанием P, а затем, функции для перевода из P в Q и из P в R.) Не использовать стандартных возможностей по вводу/выводу чисел представленных в 2-ой, 8-ой, 16-ой системах счисления. Для представления цифр больших 9 использовать заглавные буквы латинского алфавита. ЗАДАЧА 2: Вывести на экран в виде таблицы значения чисел из интервала от A до B с шагом C в системах счисления с основаниями S, P, Q, R. Числа A, B, C задаются в системе счисления с основанием S, A>=0, B>A. Обеспечить точность 5 знаков после запятой во всех системах счисления. Разработайте функцию для сложения двух чисел в системе счисления с основанием S. S=7 P=10 Q=19 R=28 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(Правила Раздела) 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! Это - перевод из одной системы в другую: FAQ: Общие вопросы по математике Ну, а это выдал поиск: 3 несложные задачи Этого вполне достаточно для решения задачи... |
-Chester- |
![]()
Сообщение
#3
|
Гость ![]() |
Volvo Честное слово очень неловко отвлекать вас всякими мелочами, но скажу честно, я вообще никогда не писал на Паскале, поэтому FAQ для меня малопонятен, если можно обьясните подоступней как можно решить эти задачи, что и как надо сделать (мне надо ведь не только написать эти программы, но еще потом и человеку обьснить, что к чему). Буду вам крайне признателен...
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата я вообще никогда не писал на Паскале -Chester-, в таком случае Вы явно ошиблись адресом, потому что если я и напишу программу (или это сделает кто-то другой, не важно), понять ее Вы не сможете (если уж "разжеванных" программ из FAQ не понимаете, а второй раз так разжевывать никто не будет, сделают набросок и все), а уж объяснить тем более... |
Guest |
![]()
Сообщение
#5
|
Гость ![]() |
Ну тогда хоть набросок сделайте...
|
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Наброски Volvo дале тебе в виде ссылок во втором посте, там есть приктически все что тебе нужно ...
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Guest |
![]()
Сообщение
#7
|
Гость ![]() |
Если не затруднит, проверьте решение ЗАДАЧИ№1:
:cwm33: |
klem4 |
![]()
Сообщение
#8
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот мне всегда нравились такие посты : проверьте пожалуйста, а самому ? Берешь исходные данные, делаешь ручной рассчет в тетрадке, потом запускаешь программу с этими исходными данными и сравниваешь ответы, если сошлисьь, значит работает привильно.
![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Guest, во-первых, если уж копируешь программу, то указывай, откуда.
А во вторых - объясни мне, зачем нужны 2 одинаковых функции FromDec и FromDec2? |
Guest |
![]()
Сообщение
#10
|
Гость ![]() |
Вроде бы все работает, но вот никак не получается сделать чтобы числа в системах от 11 ричной и выше заменялись соответствующими буквами
ВЗЯТО ИЗ FAQ |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Guest, Внимательнее будь!
Для того, чтобы перевести число "11111" в (7)-ой системе счисления в систему с основанием (19), нужно: writeln( fromdec(todec('11111', 7), 19) );, а не то, что у тебя было... Чувствуешь разницу? Число НЕ в 10-ной с/с, следовательно должно вводиться в строку, преобразовываться в (10), а оттуда в (19). А ты делал наоборот: вводил число в 10-ной с/с, преобразовывал (10) в (7), и потом вообще непонятно что преобразовывал в (19)... |
Guest |
![]()
Сообщение
#12
|
Гость ![]() |
Исправил вроде, но ![]() 1. N-строковая переменная, но ведь по идее вводимое число семиричное?"Обеспечить корректность ввода числа в системе счисления с основанием S", может я что-то упустил??? 2. ToDec(перевод ИЗ семиричной В десятичную) 3. FromDec(перевод ИЗ десятичной В девятнадцатиричную) 4. FromDec(перевод ИЗ девятнадцатиричной В двадцативосьмиричную) На всякий случай скажу, что работу программы я проверял по универсальному переводчику систем счисления, PASCOD которого нашел на одной из аналогичных тем данного форума... Сообщение отредактировано: volvo - 7.11.2005 18:21 |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Стоп...
Цитата 4. FromDec(перевод ИЗ девятнадцатиричной В двадцативосьмиричную) Не то ![]() Так что вот так: readln(n); И давай прекращать копировать программы полностью !!! Приводи только тот кусок, который ТЫ написал/изменил... То что есть в FAQ мы знаем... |
Guest |
![]()
Сообщение
#14
|
Гость ![]() |
Вот так реализовал проверку корректности ввода (взял из универсального переводчика)
Но вот осталась одна проблема при переводе в 19 и 28 системы не могу получить корректный результат. Следуя условию задачи, где сказано, что "цифры больше девяти заменять заглавными латинскими буквами" я написал вот так:
в ToDec сделал вот так:
В итоге получаемые результаты в 19 и 28 системах в моей программе отличаются от результатов получаемых в универсальном переводчике(в первую очередь такое происходит с большими числами). Как я понял надо использовать латиницу только до буквы F, но как при этом организовать корректное отображение результата я понять не могу. |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Guest, а ты не достал уже всех своим "универсальным переводчиком"?
![]() А вот изменять процедуры из FAQ я бы НЕ рекомендовал... Там уже все отлажено, и все работает. Не надо умничать, если не понимаешь КАК это работает !!! |
Guest |
![]()
Сообщение
#16
|
Гость ![]() |
ССЫЛКА: Универсальный переводчик систем счисления
К примеру возьмем число 666666 и подставим его в мою программу получим результат: 10: 117648 19: H2H0 28: 5A1K подставим это же число в переводчик и получим: 10: 117648 19: A2A0 28: 5A1D Сравним результаты, в этом и состоит проблема... |
Guest |
![]()
Сообщение
#17
|
Гость ![]() |
Не судьба видно
![]() |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Да что ты говоришь? А РАЗОБРАТЬСЯ в работе этого пресловутого "универсального" переводчика - не судьба? Только один пример:
Цитата function simvol(n:byte):char; begin if n in [10..15] then simvol:=chr(n+55) else simvol:=chr(n+48); end; Всё !!! Однозначный диагноз: правильно работает ТОЛЬКО для систем счисления с основанием <= 16... Я добавлю эту ремарку по ссылке... Вот, кстати, моя программа, выполняющая нужные тебе действия. И результат проверен на бумаге: 666666 (7) = 117648 (10) = H2H0 (19) ... const |
-Chester- |
![]()
Сообщение
#19
|
Гость ![]() |
Огромное спасибо за помощь в написании первой проги, отдельный респект Volvo.
Но вот вторую никак не удается одолеть: Как я понимаю, она основывается на первой, добавляется цикл с папраметром (от A до B), но как реализовать шаг цикла (С), мне не понятно. Неясен и момент где: Обеспечить точность 5 знаков после запятой во всех системах счисления. Разработайте функцию для сложения двух чисел в системе счисления с основанием S (причем тут сложение). Прошу прощения, что подымаю всем уже порядком поднадоевшую тему, но мне без вашей помощи кранты... |
Romtek |
![]()
Сообщение
#20
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 303 Пол: Мужской Реальное имя: Роман Репутация: ![]() ![]() ![]() |
{ Исходное число A(S) умножить на R по правилам S-арифметики. Целая частьЭта программа вычисляет коэффициенты, но выдаваемый результат не имеет точности 1e-5, т.к. в цикле я брал только 5 цифр. В действительности же нужно создать такой цикл, что outn будет сравниваться с N и если ошибка меньше чем epsMaxP, то прекратить его. Вот здесь есть ещё неплохой материал: Википедия: Системы счисления -------------------- Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
|
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 8:29 |