IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Dec --> Bin
EDG
сообщение 30.12.2006 20:21
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Здравствуйте, подобная тему уже обсуждалась год назад, но у меня другой вопрос. В FAQ'е есть программа перевода из одной с\с в другую, но та программа к сожалению переводит из десятичной в двоичную с\с только интервал чисел 1..1023. Я написал свою которая может переводить из десятичной в двоичную с\с интервал чисел 1..2047.... а дальше идёт чушь wacko.gif :
при переводе 2047 получается 11111111111, а при переводе 2048 --> 100000000010
2049 --> 100000000010
2050 --> 100000000020
2051 --> 100000000020

Program proga;
var x,st: longint;
b: real;
begin
read(x);
st:=0;
b:=0;
Repeat
b:=b+((x mod 2)*exp(st*ln(10)));
st:=st+1;
x:=x div 2;
Until x=0;

writeln(b:2:0);
end.


Помогите пожалуйста разобраться, в чём проблема?

Сообщение отредактировано: EDG - 30.12.2006 20:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
Malice
сообщение 30.12.2006 20:29
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Поменяй тип переменной b c real на extended, там мантисса побольше.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
EDG
сообщение 30.12.2006 20:58
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(Malice @ 30.12.2006 20:29) *

Поменяй тип переменной b c real на extended, там мантисса побольше.

Пробовал уже, пишется ошибка "Must be in 8087 mode to compile this." Что это? Пишет после b:=0, когда убираю эту строку, таже ошибка пишется после следующей =(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 30.12.2006 21:03
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Error 116: Must be in 8087 mode to compile this.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 30.12.2006 21:10
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +



Маленький кубик
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
EDG
сообщение 30.12.2006 21:35
Сообщение #6





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Молодец Malice! good.gif Спасибо большое! Интервал чисел увеличился как минимум в 2 раза smile.gif Мне этого хватит))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 30.12.2006 21:39
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Вот, что находилось по моей ссылке:
Цитата

Эмуляция сопроцессора
Очень часто у многих возникает вопрос - почему при компиляции у меня возникает ошибка Error 116: Must be in 8087 mode to compile this.
Ответ: Вы используете один из следующих вещественных типов:
Single, Double, Extended, Comp
Для работы с этими типами, необходима эмуляция сопроцессора. Просто добавьте в начало программы директивы:
{$E+, $N+}



--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
EDG
сообщение 30.12.2006 21:51
Сообщение #8





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


И тебе спасибо, я видел, только не помогло =( Я написал {$E+, $N+} а оно распозналось просто как коментарий и всё =(

--------------------------

Ой, извиняюсь, всё даже намного лучше, просто нада было написать {$E+,N+}, а не {$E+,$N+}
Спасиб тебе))

Сообщение отредактировано: EDG - 30.12.2006 22:01
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 30.12.2006 21:57
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Надо так:

{$E+} {$N+}



--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
EDG
сообщение 30.12.2006 22:03
Сообщение #10





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(Bokul @ 30.12.2006 21:57) *

Надо так:

{$E+} {$N+}




ОК good.gif yes2.gif
Теперь интервал составляет 1..262144 o_O Дальше просто некуда :D И мне не надо)) Вот так если нужно больше, тут уже нужно в массив запись нулей и единиц вести.

Сообщение отредактировано: EDG - 30.12.2006 22:13
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
UksusoFF
сообщение 1.06.2007 22:29
Сообщение #11





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Кирилл

Репутация: -  0  +


Народ, а как можно записывать в двоичной системе действительное счисления число, имеющее не более 50 цифр в десятичной записи? Используя Динамические массивы. чего то я не нашел... помогите пожалуста новичку blink.gif


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 6:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"