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

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

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

> Инвертирование числа, обратить цифры в real числе
сообщение
Сообщение #1





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

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


Задача состоит в обращении real числа. Например: 123.456 >> 654.321
program N_95;
uses crt;
var j,len:integer;
i:real;
si:string;
function reverse(a:real):real;
var
b:real;
begin
b:= 0.0;
while a <> 0 do
begin
b:= b*10 + round(frac(a/10)*10);
a:= trunc(a/10);
end;

reverse:=trunc(b);
end;

function IntToStr(I: real): String;
var S: string[11];
begin
Str(I, S);
IntToStr := S;
end;

begin
write('Введите челое число: '); read(i);
write('Обратное ему число: ');
si:=IntToStr(i);
len:=Length(si);
for j:=len downto 1 do
if si[j] <> '0' then
write(si[j]);

repeat until keypressed;
end.
Писал такое... Но неверно решает.
Цитата
Введите челое число: 123.456
Обратное ему число: 65432.1

численным методом не получилось (см. function reverse) ибо при делении real на 10 - ошибка, а иначе не знаю как цифры вытащить по отдельности. Вобщем уж не знаю... Помогите пожалуйста, курсач горит(

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


Гость






Ты бы название функции поменял, а то запутывает... И саму ее заодно поправить надо:
function FloatToStr(I: real): String;
var S: string[32];
begin
Str(I:0:15, S);
FloatToStr := S;
end;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


blush.gif просто я эту функцию тоже откуда то копировал и она вначале работала с int)
большое спасибо, теперь все работает верно, хотя я конечно не понял ничего, надо больше мануалы юзать :\
Родилась идея как решить без строк, но нужно из остатка целое число сделать 0.456 >> 456, как сделать впринципе знаю, но наверно сделаю криво) измерю длинну а потом в цикле умножу и возьму round, но может есть более рациональный первод 0.456 >> 456? )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(inside @ 12.12.2007 23:52) *

более рациональный первод 0.456 >> 456? )

Не совсем понимаю, зачем тебе это нужно, но сделать можно так:
while Frac(a)<>0 do a:=a*10;


Добавлено через 1 мин.
Потом, если нужно, перевести в целое:
ia:=Round(a);


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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