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

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

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

 
 Ответить  Открыть новую тему 
> Dec --> Bin
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


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





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

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


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

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

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


Гуру
*****

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

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


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


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


Профи
****

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

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



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





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

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


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


Гуру
*****

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

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


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

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



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





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

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


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

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

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

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


Гуру
*****

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

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


Надо так:

{$E+} {$N+}



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





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

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


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

Надо так:

{$E+} {$N+}




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

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





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

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


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


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

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

 





- Текстовая версия 29.03.2024 18:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name