Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 72, средняя оценка - 4.97
sasiska
1 / 1 / 0
Регистрация: 16.05.2011
Сообщений: 25
#1

Перевод дробных чисел из десятичной в двоичную систему счисления - C++

16.05.2011, 14:44. Просмотров 10211. Ответов 11
Метки нет (Все метки)

для натуральных чисел все понятно, и предельно ясно. А как сделать для дробных чисел? Ведь перевод дроби надо умножать, а здесь делить с остатком, кто поможет?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
 
void main ()
{
  int r,a,i,w[32];  // Г‡Г*Г¤Г*ГҐГ¬ ïåðåìåГ*Г*ûå
 
  printf("vvedite chislo: "); // âûâîäèì ñîîáùåГ*ГЁГҐ "ГўГўГҐГ±ГІГЁ ÷èñëî"
  scanf("%d",&a); // Г§Г*ïèñîâГ*ГҐГ¬ Г*Г*ГІГіГ°Г*ëüГ*îå ÷èñëî Гў "Г*"
 
  memset(w,0,sizeof(w)); // îáГ*óëåГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ*
 
  for(i=0;i<32;i++) //ðåГ*ëèçГ*öèè ГЁГІГҐГ°Г*öèè - ïîâòîðåГ*ГЁГї öèêëГ* äëÿ Г°Г*Г§Г*ûõ Г§Г*Г*Г·ГҐГ*ГЁГ© ïåðåìåГ*Г*îé i
    {
      w[i]=((a>>i)&1);
    }
  
  printf("result: ");
  for(i=31,r=0;i>=0;i--)
    { 
      if((w[i]==1)||(r==1))
    {
   
      printf("%d",w[i]);
      r=1;
    }
    }
 
  putchar('\n');
}
Добавлено через 12 минут
Или тут намек на то, что надо сделать 2 программы в 1 и потом просто вывести общий результат, а тогда как это сделать ОО?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 14:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод дробных чисел из десятичной в двоичную систему счисления (C++):

Перевод из десятичной в двоичную систему счисления - C++
Здравствуйте товарищи знатоки! Написал такую программу которая переводит десятичные числа в двоичные. Но есть одно НО. Работает она...

Перевод чисел из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную - C++
напишите код программы для проверки перевода чисел из десятичной системы счисления в двоичную,восьмеричную,шестнадцатеричную на языке С ...

Перевод чисел в двоичную систему счисления - C++
Помогите найти ошибку : #include&lt;iostream&gt; using namespace std; #include&lt;conio.h&gt; void inp(int n, int k=0, int i=0) { ...

Перевод букв и чисел в двоичную систему счисления - C++
Здравствуйте, как сделать на C++ перевод букв и чисел двоичную систему счисления ?

Перевести с десятичной в двоичную систему счисления - C++
Есть ли какой метод в С++ для этого или надо самому писать метод))?

Перевод с десятичной в двоичную систему - C++
Здравствуйте,нужно написать програму (только чистый Borland C), которая переводит числа из десятичных в двоичные..!

11
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
16.05.2011, 15:04 #2
1. Достаточно разобрать пример для положительных чисел меньше 1
2. На входе у тебя строка символов "0.ххх...ххх" - с размером тоже надо конкретно определиться.
3. Делаешь из мантиссы целое натуральное число.
4. В цикле умножаешь на 2. Если был перенос в старший разряд (это всегда 1), то к результату надо добавить 1/счетчик степени. Увеличить счетчик степени на 1. Остаток числа (до цифры переноса) - это число для следующего умножения на 2.
Как-то так.
1
sasiska
1 / 1 / 0
Регистрация: 16.05.2011
Сообщений: 25
16.05.2011, 15:13  [ТС] #3
Нет, чилса не настолько огромные, я думаю float вполне хватит, там будет максимум 3-4 символов после запятой.
То есть делать 2 проги в одной, а потом вывести общий результат?
Тогда вопрос такой, а как заставить отличить дробную часть от целой, ну просто вводить отдельно дробную или отдельно целую не очень прилично
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
16.05.2011, 15:21 #4
Дык вводить как раз - проще простого:
xxx.xxx
До точки - целая часть. После точки - дробная часть.
1
sasiska
1 / 1 / 0
Регистрация: 16.05.2011
Сообщений: 25
16.05.2011, 15:29  [ТС] #5
ValeryLaptev,
ой ой ой, голова уже сутра не варит, не выводить, а при вводе как определить, что до точки целая, после точки дробная, или реально сделать относительно коряво
"введите целую часть" "введите дробную часть" , и все через int потом каждое число отдельно посчитать и выдать общий резльтат через точку.
То есть заполнить 2 массива ответом и потом вывести их через точку ))))

а как там дробную часть переводить, можно поподробнее? Как переводить на бумажке я помню, но что то как записать это програмкой не очень понимаю
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
16.05.2011, 15:45 #6
Для ввода числа достаточно одного стринга. А потом вырезать до точки и после точки.
1
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
16.05.2011, 15:59 #7
Цитата Сообщение от sasiska Посмотреть сообщение
а как там дробную часть переводить, можно поподробнее? Как переводить на бумажке я помню, но что то как записать это програмкой не очень понимаю
C++
1
2
3
4
5
6
double num; // исходное число
double intOfNum; // целая часть
double fracOfNum; // дробная часть
//...
intOfNum = floor(num);
fracOfNum = num - floor(num);
1
sasiska
1 / 1 / 0
Регистрация: 16.05.2011
Сообщений: 25
16.05.2011, 16:54  [ТС] #8
Народ, может есть у кого желание, просто так помочь мне написать прогу перевода дробной части?
Я уже 2 часа сижу, ошибку делаю в каждой строчке, чего то голова совсем не варит сейчас
0
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
16.05.2011, 16:58 #9
результат куда выводить?
0
sasiska
1 / 1 / 0
Регистрация: 16.05.2011
Сообщений: 25
16.05.2011, 16:59  [ТС] #10
да все равно куда, просто можно отдельной прогой, я ее потом соеденю
ну прямо целое число там пишем, например 625, а он ответ нам 101
и все )))
0
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
16.05.2011, 17:34 #11
Ну, что-то подобное
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream.h>
#include <math.h>
 
int main(int argc, char* argv[])
{
   double num, frac_num;
   unsigned int int_num;
   int sz;
 
   sz = sizeof(unsigned int)*8;
   cout << "Enter the number: ";
   cin >> num;
   int_num = num;
   frac_num = num - floor(num);
   for (int i = sz-1; i >= 0; i--)
   {
      cout << ((int_num>>i)&1);
   }
   cout << ',';
   for (int i = 0; i < 8; i++)
   {
      frac_num *= 2;
      cout << floor(frac_num);
      frac_num -= floor(frac_num);
   }
   cout << endl;
   system("pause");
   return 0;
}
2
sasiska
1 / 1 / 0
Регистрация: 16.05.2011
Сообщений: 25
16.05.2011, 20:22  [ТС] #12
добавил ко всем std:: почему то не хотел без него работать, хотя библиотеку подключил
во, всем разобрался, все понял спасибо огромное

два последних вопроса: А как в этой прожке можно от лишних нулей избавиться, что бы только ответ был и все? Хотя и так то же неплохо
еще вопрос:
почему в 6.0 пишет такую штуку? и не запускается нигде кроме как в 2010
c:\program files\microsoft visual studio\vc98\include\eh.h(32) : fatal error C1189: #error : "eh.h is only for C++!"
Error executing cl.exe.
0
16.05.2011, 20:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 20:22
Привет! Вот еще темы с ответами:

Перевод из десятичной в двоичную систему - C++
нужно перевести число из десятичной в двоичную систему! На форуме искал но не подходит! Вот мое творение #include &lt;iostream&gt; using...

Перевод из десятичной системы счисления в двоичную - C++
Задали написать прогу для перевода числа из одной системы в другую #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;string&gt; using...

Перевод числа из десятичной системы счисления в двоичную. - C++
Что неправильно??? + вопрос. дальше по заданию мне надо 2 числе перевести в двоичную систему, а потом их сложить. Как их складывать?...

Перевод числа из десятичной системы счисления в двоичную - C++
Как зделать програму которая бы считала перевод с 10-ичной системы в 2-ичную? подскажыте плз)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru