Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2008, 13:16   #1
Gon
Пользователь
 
Регистрация: 30.04.2008
Сообщений: 16
По умолчанию Округлениче дробного числа

Подскажите как можно округлить дробное число Х с точностью У.
Т.е. я ввожу число(х = 15.54763) и ввожу число знаков после запятой(у = 3) и мне выводит 15.547

Последний раз редактировалось Gon; 01.05.2008 в 14:27.
Gon вне форума Ответить с цитированием
Старый 01.05.2008, 13:27   #2
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

round(x,y);
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 01.05.2008, 14:06   #3
Gon
Пользователь
 
Регистрация: 30.04.2008
Сообщений: 16
По умолчанию

У меня так не получается, говорит что после x нужно ")"
Gon вне форума Ответить с цитированием
Старый 01.05.2008, 14:15   #4
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

значит так нельзя.Просто в delphi можно
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 01.05.2008, 14:29   #5
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Не знаю есть ли на паскале такая ф-цыя, но самому написать тоже не сложно, я бы сделал именно так! Ты попросут теряеш свое время на поиски!
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 01.05.2008, 16:39   #6
motaro
Форумчанин
 
Регистрация: 10.07.2007
Сообщений: 104
По умолчанию

вот так у меня вроде всё четко
Код:
uses crt;
var x,y:real;
begin
 clrscr;
 write ('Введите число: ');
 readln (x);
 write ('Введите число знаков после запятой ');
 readln (y);
 writeln (x :1:round(y));
 readkey
end.

Последний раз редактировалось motaro; 01.05.2008 в 16:45.
motaro вне форума Ответить с цитированием
Старый 01.05.2008, 16:49   #7
Gon
Пользователь
 
Регистрация: 30.04.2008
Сообщений: 16
По умолчанию

А как это приспособить к этому коду.
Код:
PROGRAM Prog(INPUT, OUTPUT);
VAR
  X: STRING;
  Ch, Ch1, Y, Ch2: REAL;
  CC, Ch3: INTEGER;
CONST Digit: STRING[16]='0123456789ABCDEF';
FUNCTION Fromdec(N, Radix: LONGINT): STRING;
VAR
  S: STRING;
BEGIN
  S := '';
  REPEAT
    S := Digit[(N MOD Radix) + 1] + S;
    N := N DIV Radix;
  UNTIL N = 0;
  Fromdec := S;
END;
FUNCTION From_dec(X: REAL; Radix: INTEGER): STRING;
CONST
  Digit: STRING[16] = '0123456789ABCDEF';
  Max_prec = 6;
VAR
  _frac: REAL;
  S_frac: STRING;
  Precision: INTEGER;
BEGIN
  _frac := FRAC(X); S_frac := '.';
  Precision := 0;
  WHILE(_frac > 0) AND (Precision < Max_prec)
  DO
    BEGIN
      _frac := _frac * Radix;
      S_frac := S_frac + Digit[(TRUNC(_frac)) + 1];
      INC(Precision);
      _frac := FRAC(_frac);
    END;
  From_dec := Fromdec(TRUNC(X), Radix) + S_frac;
END;
BEGIN
  WRITE('Введите число ');
  READLN(Ch);
  WRITE('Введите СС ');
  READLN(CC);
  WRITE('Число знаков после запятой ');
  READLN(Ch1);
  X := From_Dec(Ch, CC);
  WRITELN(X :1 :ROUND(Ch1));
END.
Вылазит ошибка в
Код:
WRITELN(X :1 :ROUND(Ch1));
Скажите что подправить.

Последний раз редактировалось Gon; 01.05.2008 в 18:48.
Gon вне форума Ответить с цитированием
Старый 01.05.2008, 21:13   #8
motaro
Форумчанин
 
Регистрация: 10.07.2007
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Gon Посмотреть сообщение
Вылазит ошибка в
Код:
WRITELN(X :1 :ROUND(Ch1));
Скажите что подправить.
наверно потому-что X- string, а записывать так можно с вещественными типами
motaro вне форума Ответить с цитированием
Старый 01.05.2008, 21:37   #9
Gon
Пользователь
 
Регистрация: 30.04.2008
Сообщений: 16
По умолчанию

Да, но если X не string то тогда я не смогу присвоить переменную From_Dec(Ch, CC);, то всеравно будет такая же ошибка ибо она тоже стринг Возможно как то переход сделать, или надо искать другой способ округления ?
Gon вне форума Ответить с цитированием
Старый 01.05.2008, 23:57   #10
Gon
Пользователь
 
Регистрация: 30.04.2008
Сообщений: 16
По умолчанию

Я тут подумал.
Если X:string и мы знаем сколько надо вывести знаков после запятой. Находим запятую в строке. Отсчитываем от нее нужное количество знаков, остальное удаляем. Выводим X.
Можно ли это как то реализовать ? Или так не получится.
Gon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
Большие числа Лубышев Помощь студентам 6 27.02.2008 22:57
Факториал от дробного числа RIO Помощь студентам 11 26.12.2007 18:36
Про числа Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 6 12.12.2007 07:18
Числа Палиндромы в С++ grerg Помощь студентам 0 27.11.2007 11:42