| AlexSt |
5.12.2007 21:35
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
Code: |
![]() ![]() |
| Lapp |
6.12.2007 3:06
Сообщение
#2
|
|||
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
AlexSt, пожалуйста, не дублируй темы.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
| AlexSt |
14.12.2007 10:51
Сообщение
#3
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
помогите модернизировать алгоритм конвертации чисел(чтобы конвертировал числа с дробной частью), или на словах хотя бы напишите что делать.
function Convert(Num, SetIn, SetOut: String): String; |
| AlexSt |
14.12.2007 23:38
Сообщение
#4
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
что, никто не может объяснить даже на словах как замутить с дробной частью???java script:emoticon(':blink:', 'smid_2')
|
| Lapp |
15.12.2007 10:04
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Послушай, AlexSt, а сам-то ты что-нибудь сделал?..
Насколько я понял, ты притащил чужой код и просишь нас изменить его для тебя. А кому от этого какая польза? Только та, что ты зачет сдашь? Твоя задача, на самом деле, интересная и не очень простая. Но копаться в чужом коде лично я не хочу. Лично мне удобнее и быстрее было бы написать свою прогу. И тебе я рекомендую сделать именно это. С нуля. И если ты решишься на это - помощь я тебе гарантирую (как минимум - свою). А так - какой смысл? Ты правда думаешь, что мне так хочется, чтоб ты сдал свой зачет или что там у тебя?.. Вот научить тебя я хочу. Честно. Кстати, добавление возможности вещественных чисел к этой программе - совсем не такая простая вещь. Например, для конвертации тебе понадобится деление. Если ты все же хочешь переделывать эту программу, разберись, как она работает. Я готов отвечать на твои вопросы (по делу). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| AlexSt |
15.12.2007 11:19
Сообщение
#6
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
в проге я разобрался, сам сделал вычитание, хочу ща сделать конвертацию без деления... будут вопросы - отпишусь
|
| Lapp |
15.12.2007 14:50
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
в проге я разобрался, сам сделал вычитание, хочу ща сделать конвертацию без деления... Буду следить за темой. Добавлено через 18 мин. Некоторые соображения общего характера.. Из истории арифметики Как появились числа? Просто люди стали считать - пальцы, коров.. Какие это были числа? Натуральные (то есть 1, 2, 3...) Потом появилось сложение. Многократное сложение - это умножение. Сначала система счисления была римская - в ней считать неудобно. Потом появилась десятичная запись. Что она собой представляет? Сумму произведений цифр на основание системы. Теперь остановимся и посмотрим на ту прогу, которую ты привел. Что там есть? Мне видится, что главное там - конвертация. Для нее нужно уметь умножать (цифры на основание). Для умножения надо уметь складывать. Чувствуешь аналогию с историческим процессом? Идем дальше. Появилось вычитание - как действие, обратное сложению. Вычитание повлекло расширение натуральных чисел, добавление к ним нуля и отрицательных чисел. Что такое число "-5"? Это результат операции "0-5". То есть отрицательные числа просто заменили длинную запись (операцию) на короткую (отрицательное число). (попутно вопрос: ты ввел отрицательные числа, когда сделал вычитание? без этого нельзя) Наконец, появилось действие, обратное умножению - деление. Оно также повлекло за собой расширение понятия числа - появились дробные числа. Что такое 1/5? Это результат операции 1:5 - то есть снова просто укороченная запись, а по сути одно и то же. Как видишь, дробные числа не бывают без деления Но я буду рад, если ты мне докажешь обратное -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| AlexSt |
15.12.2007 21:24
Сообщение
#8
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
ок, только что весьма надёжно получилось сделать умножение с дробной частью, думаю сам смогу сделать и вычитание, для деления хочу перевести числа в десятичную разделить и перевести обратно в нужную сс. остаётся только конвертация чисел с дробной частью... я бы хотел узнать как вообще должна вести себя запятая при конвертации в другую сс?
|
| AlexSt |
16.12.2007 10:13
Сообщение
#9
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
и ещё там есть ф-ция преконверт, гре я пытался сделать перевод в др. сс с запятой, но нажимая выполнить прога виснет( почему?
|
| AlexSt |
16.12.2007 14:13
Сообщение
#10
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
и ещё, под каким номером находится shift и space, в книге не могу найти(, знаю enter - #13, backspace - #8...
|
| andriano |
16.12.2007 14:44
Сообщение
#11
|
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Пробел - #20, у Shift кода нет - это клавиша-модификатор. Если в DOS, то можно определить ее нажатие, анализируя область данных BIOS по смещению $17 и $18.
|
| AlexSt |
16.12.2007 21:26
Сообщение
#12
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
спасибо за подсказочку
function preConvert (Num1, SetIn, SetOut: String): String; |
| Lapp |
18.12.2007 9:06
Сообщение
#13
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
наваял код по конвертированию в др сс с дробной частью, но он работает некорректно, может кто сможет найти ошибку? - ф-ция преконверт (у неё в подопечных ф-ция конверт для перевода целой части) Видимо, не в подопечных, а в подручных.. Посмотрел я твой код.. Если честно - до конца не разобрался, но у меня есть подозрение, что это не нужно. Хотя тут сайт про Паскаль, по-русски иногда говорить тоже желательно Заранее скажу, что если она (основная идея) состоит в том, чтобы разделить число на целую и дробную части, перевести их по отдельности в другую СС (систему счисления, так правильно, не "исчисления"), а потом снова слепить вместе через десятичную точку (а мне показалось, что ты хочешь делать именно так), то вынужден тебя разочаровать - этот путь неверный. Он неверен в корне, а не в отдельных деталях, так что, я думаю, его и подправить нельзя Пожалуйста, прежде чем предлагать код для выискивания ошибок, говори хотя бы в нескольких словах алгоритм. Ладно? Если хочешь, можем начать обсуждение работоспособного алгоритма. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| AlexSt |
18.12.2007 21:25
Сообщение
#14
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
а какие ещё есть варианты кроме как "разделить" и "слепить"? у меня только такая идея и была...(
|
| Lapp |
19.12.2007 8:48
Сообщение
#15
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
а какие ещё есть варианты кроме как "разделить" и "слепить"? у меня только такая идея и была...( Еще вариант - про который я говорил с самого начала. В той проге, которую ты выбрал за образец, перевод делается так: Число (А) в записанное в СС1 с основанием D1 нужно перевести в СС2 с основанием D2. Допустим, что мы уже умеем умножать числа в любой системе счисления (одинаковой, естественно, для обоих сомножителей). Переводим каждую цифру этого числа из СС1 в СС2. Теперь это уже, возможно, не цифры, а числа (например, 5 десятичное = 101 двоичное). Дальше действуем по формуле, которую я сегодня уже кому-то тут писал.. Например, исходное число a3a2a1a0 (каждое ai - цифра), то есть: A(СС1) = a3*D1^3 + a2*D1^2 + a1*D1 + a0 Мы перевели каждую цифру в другую систему ai(CC1) = ai(CC2) = ai2. Также, мы переводим основание первой системы В1 в СС2 D1(CC1) = D1(CC2) = D12 Теперь перепишем, чему равно А, но уже в СС2: A(СС2) = a32*D12^3 + a22*D12^2 + a12*D12 + a0 Осталось произвести эти умножения и сложения (теперь понял, почему они есть в той проге?) Идем дальше, хотим дроби. То есть теперь у нас число выглядит так: A = a3a2a1a0.b1b2 - тут две цифры после запятой. Переводить его надо аналогично, только с дробными цифрами будут стоять отрицательные степени основания: A(СС2) = a32*D12^3 + a22*D12^2 + a12*D12 + a0 + b12*D12^-1 + b22*D12^-2 Вот и все. Казалось бы, то же самое. Но только отрицательные степени - это деление: D12^-n = 1/(D12^n) То есть, вот так: A(СС2) = a32*D12^3 + a22*D12^2 + a12*D12 + a0 + b12/D12^1 + b22/D12^2 Так что тебе понадобится деление. Я бы на твоем месте все сделал заново, без той проги.. Ничего особо сложного, а путаницы меньше. Время есть? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| Гость |
19.12.2007 11:16
Сообщение
#16
|
|
Гость |
спасибо, наверно так и сделаю, деление только как...
|
| Lapp |
19.12.2007 11:42
Сообщение
#17
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
спасибо, наверно так и сделаю, деление только как... Можно просто обычным уголком Деление a/b это есть нахождение корня уравнения a=b*x. В оригинале это делается подбором. Способ деления уголком - это и есть подбор (вспомни, каждую цифру приходится подбирать). Вообще, если хочешь подойти серьезно, рекомендую почитать Кнута. Я помогу с делением. Только чуть позже.. спать пора -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| AlexSt |
19.12.2007 19:02
Сообщение
#18
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
Цитата обычным уголком ))) если есть алгоритм или знаешь где есть отпишись как проснёшся по поводу времени - его уже нет, курсовую лучше всего было бы сдать завтра (к отчёту ещё и не приступал) Кнута почитать не успею |
| AlexSt |
19.12.2007 19:44
Сообщение
#19
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
кстати, к свелению у меня прога на делфы...
я думаю целесообразно буит изменить ф-цию конверт используя "правило уголка"... жду, жду, жду.... |
| Lapp |
21.12.2007 8:25
Сообщение
#20
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
к свелению у меня прога на делфы... Не знаю, к какому "свелению", но это касается интерфейса, о котором пока разговора не было.я думаю целесообразно буит изменить ф-цию конверт используя "правило уголка"... жду, жду, жду.... Ну думаешь - ну делай! Ты когда нибудь пробовал сделать стол из кровати? Или, скажем, штаны на рубашку перешить?.. Попробуй. Сделать с нуля, повторяю, проще. Если, конечно, без очковтирательства - типа: авось пронесет - похоже же! Для вещественного числа нужен соответствующий формат. Если не продумать заранее - получится себе дороже. Вот, как я бы стал делать, например: type Посмотри. Здесь, конечно, не без недочетов - на скорую руку сляпал. Если понравится - давай дальше двигать. Вместе. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
|
Текстовая версия | 9.12.2025 1:21 |