![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Dao |
![]()
Сообщение
#21
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Репутация: ![]() ![]() ![]() |
Я мож и опоздал, но в том году писал прогу, которая переводит числа из десятичной системы счисления в шестнадцатеричную (а может и еще в какую-нить). Так, если кому пригодится
Код uses crt; var a : real; z,k,q : integer; s,m : string; c : char; begin repeat write ('Введите дробное число по основанию 10 : '); readln(a); write ('Введите новое основание : '); readln(q); write ('Введите количество знаков после запятой : '); readln(z); k:=0; s:='0,'; m:=''; a:=a-trunc(a); while (a>0)and(k<z) do begin k:=k+1; a:=a*q; str(trunc(a),m); if q=16 then begin if m='10' then m:='A'; if m='11' then m:='B'; if m='12' then m:='C'; if m='13' then m:='D'; if m='14' then m:='E'; if m='15' then m:='F'; end; s:=s+m; a:=a-trunc(a); end; writeln ('Число по основанию ',q,' : ',s); writeln('Будем считать еще? (Д/Н)'); writeln; c:=readkey; until (c='y')or(c='Y'); end. |
Altair |
![]()
Сообщение
#22
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Опоздал во-первых, во-вторых слишком однобокая прога, всего 1 действтие... не оптимально... хотя молодец, задача решена, и это главное!
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Dao |
![]()
Сообщение
#23
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Репутация: ![]() ![]() ![]() |
Полностью с тобой согласен, но 5 у меня уже сотит, а это главное.
|
Altair |
![]()
Сообщение
#24
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Точно!
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Vika |
![]()
Сообщение
#25
|
Гость ![]() |
Цитата(Oleg_Z @ 16.10.04 20:16) function FromDec(n, radix:longint):string; {перевод числа n из radix c/c в 10-ую} n:=n div radix; function ToDec(n:string; radix:longint):longint; {перевод числа n из 10-ной с/с в radix} for i:=1 to length(n) do m:=m*radix+pos(n[i],digit)-1; вот, перевод числа из любой с/с в 10. не делением, а умножение... а у тебя делением, тоже и с другой, короче должно быть наоборот.... Сообщение отредактировано: Vika - 22.10.2004 9:29 |
Altair |
![]()
Сообщение
#26
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Не понял, что тебе не нравиться?
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
aspu |
![]()
Сообщение
#27
|
Гость ![]() |
А вот я что-то не пойму та прога универсальная на запятую не ругается но с дробями работает неправильно как бы туда еще дроби запихнуть?
![]() |
Jill |
![]()
Сообщение
#28
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
ребята, а если ПРОСТО десятичное (и положительное, и отрицательное) в двоичное? что-то по полочкам не раскладывается совсем
![]() проблема именно в ОТРИЦАТЕЛЬНЫХ числах ((( Сообщение отредактировано: Jill - 26.09.2005 15:00 |
aspu |
![]()
Сообщение
#29
|
Гость ![]() |
У тебя не проблема
![]() ![]() |
Jill |
![]()
Сообщение
#30
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
как это?
Цитата(aspu @ 26.09.2005 15:38) добавляешь его к итоговому по-моему, там происходят изменения в старшем разряде, а не просто меняется знак разве не так? |
aspu |
![]()
Сообщение
#31
|
Гость ![]() |
A черт его знает в одних источниках одно написано в других другое. Вон виндовый калькулятор вообще при преобразовании туда-обратно фигню выдает какую-то. Полный бред вобщем
|
Jill |
![]()
Сообщение
#32
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Цитата(aspu @ 27.09.2005 8:48) виндовый калькулятор вообще при преобразовании туда-обратно фигню выдает какую-то калькулятор не обрабатывает отр. числа :-) чтоб получить отр. необходимо перевести модуль числа, провести инверсию (поменять 0 на 1 и наоборот) и прибавить единицу (по-моему, можно в самом калькуляторе) а вот как это сделать в pascal... :-( |
aspu |
![]()
Сообщение
#33
|
Гость ![]() |
ну вот и меняй
![]() |
Гость |
![]()
Сообщение
#34
|
Гость ![]() |
Помогите пожалуйста модифицировать программу перевода для больших целых чисел (>14 разрядов). Использую фукции Mod и т.п, которые только для целых.
Цитата var a,b,cc,r:integer; c,ab,dd:string; Function sn (a, n: integer): integer; Var i,s: integer; Begin sn := 0; s := 1; For i:=1 To n Do s := s*a; sn := s; End; Procedure make_to_ten (m: String; Var kk: String); var i, r : integer; l : char; Begin i := 0; r := 0; while i<>length(m) Do Begin l := m[length(m)-i]; {отделяем цифру} If ord(l)<=ord('9') Then r := r + (ord(l) - ord('0')) * sn (a, i) {для чисел 0,1,..,9} Else r := r + (ord(l) - ord('a') + 10) * sn (a, i); {для латинских букв} i := i + 1; End; str (r, kk); End; Function intg(d:String): integer; Var code,res: integer; Begin val(d,res,code); intg := res; End; begin write('Исходная система счисления: '); readln(a); write('Итоговая система счисления: '); readln(b); write('Число: '); readln( c ); ab := ''; If b=10 Then make_to_ten(c,ab) {переводим в десятичную СС} Else Begin make_to_ten(c,dd); {переводим в десятичную СС} cc := intg(dd); {переводим строковую информацию в целочисленную} while cc>0 Do Begin r := cc Mod b; {берем остаток} cc := cc Div b; {берем целое частное} If r>=10 Then ab := chr(ord('a')+r-10)+ab Else ab := chr(48+r)+ab; End; End; writeln ('-----------------------'); writeln ('Итог: ',ab); readln; End. |
![]() ![]() |
![]() |
Текстовая версия | 10.08.2025 18:04 |