Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ числа с фиксированной и плавающей точкой

Автор: 18192123 11.01.2007 2:33

В текстовом файле записаны вещественные числа в форме с фиксированной точкой. Преобразовать файл, представив каждое число в форме с плавающей точкой, сохранив две цифры после точки в мантиссе.

Первый раз сталкиваюсь с таким, что вообще нужно делать для того, чтобы представить каждое число в форме с плавающей точкой, сохранив две цифры после точки в мантиссе?


Автор: volvo 11.01.2007 2:47

Прочитай пока здесь: http://www.dstu.edu.ru/informatics/mtdss/part3.html

Автор: 18192123 11.01.2007 3:36

Я так и не смогла разобраться!

Объясните пожалуйста!

Автор: Sundery 11.01.2007 4:16

алгоритм такой - считываешь строку из файла, пробегаешь символы до точки, записываешь в один string, и после точки 2 символа в другой string. затем с помощью val переводишь оба string'а в integer. второй делишь на 100 и прибавляешь к первому.. надеюсь понятно smile.gif может не самый лучший способ, но это первое что в голову пришло

Автор: мисс_граффити 11.01.2007 4:49

ну и ради чего такие извращения?
val и с действительными числами прекрасно работает.

не совсем поняла задание:

Цитата
представив каждое число в форме с плавающей точкой, сохранив две цифры после точки в мантиссе.

в мантиссе нет точек! надо сохранить две цифры, которые были после точки в форме с фиксированной точкой? или сделать так, чтобы в мантиссе было 2 значащих цифры? или в мантиссу записать только те две цифры, которые были после точки (отбросив целую часть)?
В общем, приведи пример: что было->что стало

Автор: 18192123 11.01.2007 17:55

Цитата(мисс_граффити @ 11.01.2007 0:49) *

В общем, приведи пример: что было->что стало

Боюсь, что не могу ответить на твой вопрос, поскольку задание вообще не поняла ...

Автор: Archon 12.01.2007 4:32

Я это так представляю:
00544.115650 -> 5.44E2
12024.120000 -> 1.20E4
00000.100000 -> 1.00E-1
00000.000015 -> 1.50E-5

Автор: 18192123 14.01.2007 1:49

Цитата(Archon @ 12.01.2007 0:32) *

Я это так представляю:
00544.115650 -> 5.44E2
12024.120000 -> 1.20E4
00000.100000 -> 1.00E-1
00000.000015 -> 1.50E-5

а как это можно осуществить?

Автор: Malice 14.01.2007 2:29

Цитата(18192123 @ 13.01.2007 21:49) *

а как это можно осуществить?


Вон, что вышло: wacko.gif
Function format (x:string):string; 
var e:integer;
z,s:string;
begin
if x[1]='-' then begin delete (x,1,1); z:='-'; end else z:='';
while x[1]='0' do delete (x,1,1);
e:=pos('.',x)-1;
if e=0 then
while x[2]='0' do begin dec (e); delete (x,2,1); end;
delete (x,e+1,1);
dec (e); insert ('.',x,2);
delete (x,5,255);
while length(x)<4 do x:=x+'0';
str (e,s);
format:=z+x+'E'+s;
end;


Проверка:
writeln (format('00544.115650'));