![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
MiX |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вобщем нужно написать програму что б переводила дроби с 2 в 10 с.с
Я вот написал но чтото здесь нитак Помогите пожалуста найти ошыбки, или может ктото знает чтоб зделать как то по другому Код var h,r,a:real; n,z,x,i:longint; errcode:integer; q,w,s: string; begin readln(s); n:=pos('.',s); q:=copy(s,1,n); w:=copy(s,n,length(s)-n); val(q,z,errcode); for i:=1 to (n-1) do begin x:=z mod 10; z:=z div 10; r:=exp(ln(2)*i)*z+r; end; val(w,z,errcode); for i:=n+1 to length(s)-n do begin x:=z mod 10; z:=z div 10; a:=1/(exp(ln(2)*i))*z+a; end; h:=a+r; writeln(h); end. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, по правилам перевода из двоичной в десятичную (см. Здесь (Википедия)), надо бы делать так:
var |
MiX |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
она неправильно работает:
я ввожу 0,111, должно выводить 0,875 а оно выводит совсем не то... ![]() |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
|
MiX |
![]()
Сообщение
#5
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я извиняюсь, незаметил...
Вопрос следующий: как эту же прогу написать что б выводила с точностю до 0.00000005 ?? ![]() |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
То есть, ты имеешь в виду, чтобы при вводе
s := '0.1111111111111111111111111111111111';программа выводила бы: " 0.9999999404", а не " 0.999999999941792" как без этого ограничения? Тогда исправить условие второго цикла:
|
MiX |
![]()
Сообщение
#7
|
![]() Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
я имею ввиду шоб оно не выводило больше цыфр посе комы чем в ограничении тоисть 8 и последнюю цыфру автоматически меняло на 5 или 0, тоисть еси n>5 то 0, а еси n<5 то на 5 (n - последняя цыфра)
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:17 |