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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2017, 11:55   #1
anna_bleak
Новичок
Джуниор
 
Регистрация: 19.12.2016
Сообщений: 2
По умолчанию написать программу, которая считает погрешность при переводе дробного числа из 10чной в 2ичную систему счисления

Мне нужно написать программу, которая считает погрешность, при переводе дробного числа из 10чной в 2ичную систему счисления, я не ушла дальше алгоритма действий(за несколько дней)
1. ввод дробного числа;
2. перевод в 2ичную систему счисления;
3. потом обратно в 10ичную;
4. отнимаем получение число от исходного;
5. выводим.
как бы ничего сложного, но что делать с дробными числами понятия не имею :с
anna_bleak вне форума Ответить с цитированием
Старый 09.01.2017, 16:15   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,551
Смех

Задача бессмысленная, как и большинство задаваемых студентам задач.
Погрешность зависит от
- платформы, на которой выполняется действие ( ПК? микроконтроллерная система ? БЭСМ-2 ? арифмометр "Феликс" ?)
- языка программирования
- типа выбранных переменных ( real ? double? extended? )
Форма хранения и обработки данных в Intel-совместимых ПК двоичная, в отличие, скажем, от IBM-360, где предусмотрены и команды десятичной арифметики. Так что когда выполняем подпрограмму ввода scanf ("%lf", &a), данные попадают в переменную 'а' уже в двоичном виде, раскроенные на знак-мантиссу-порядок, и ничего никуда преобразовывать не надо.
Обратное преобразование в десятичный вид, точнее, его символьное представление, даст подпрограмма вывода printf ( Это все на Си) . Можно, конечно, взять внутреннее представление числа, обработать его специально написанной программой для работы с ооочень длинными мантиссами - и тогда оценим погрешность. Но это - задача отнюдь не для зеленых студентов.
Цитата:
Сообщение от anna_bleak Посмотреть сообщение
но что делать с дробными числами понятия не имею :с
так сама же и написала программу действий из 5 пунктов, только п.2 и п.3 выбрасываем ввиду их бессмысленности.

Код:
var
  Form1: TForm1  ;
  a : single ; x,y : extended ;
implementation

{$R *.dfm}


procedure TForm1.FormClick(Sender: TObject);
begin
   a := 1.0/3.0 ; x := 1.0/3.0 ; y := x-a ;
   Memo1.Lines.Add ( Format ('%16.12f  %16.12f',[x,y]) )
end ;
end.
Имеем результат : 1/3 = 0,333333333333 , абс. погрешность = -0,000000009934

Последний раз редактировалось digitalis; 10.01.2017 в 10:32.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу перевода данного натурального числа в восьмеричную систему счисления (Pascal) Nik_832 Паскаль, Turbo Pascal, PascalABC.NET 3 16.04.2016 19:23
написать программу для перевода дробных десятичных чисел в шестнадцатеричную систему счисления на Turbo Delphi Venik159 Работа с сетью в Delphi 1 19.03.2014 21:17
Ошибка при переводе числа Marsel737 Общие вопросы Delphi 4 06.12.2009 12:56
написать программу, которая считает количество цифр в введенной строке 111111 Общие вопросы C/C++ 2 17.12.2008 11:30