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

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

Войти
Регистрация
Восстановить пароль
 
Antaress
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 1
#1

Умножить и вывести в 10 СС 2 числа в Двоичной и Восьмеричной системе (Пожалуйста, исправьте программу!) - C++

26.01.2013, 10:51. Просмотров 599. Ответов 1
Метки нет (Все метки)

Задание таково:

Даны 2 числа в Двоичной системе и Восьмеричной системе. Необходимо их умножить и вывести в 10 СС. Естественно учитывая дробные.
Есть код программы, но я не понимаю почему у меня неправильно выводит ответ...помогите кто сможет.
Вот сам код:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
float a,b,a1,a2,c,s,s1,p,d,e;
cin>>a>>b;
a1=floor(a);
a2=a-a1;
p=1;s=0;s1=0;
 
while(a1>0)                                       //работаем с целыми (для двоичн системы)
{
s=s+(fmod(a1,10))*p;                   
p=p*2;
a1=floor(a1/10);
}
p=0.5;
while(a2>0)                                    //работаем с дробными (для двоичн системы)
{
s1=s1+floor(a2*10)*p;
p=p*0.5;                              
a2=a2*10-floor(a2*10);
}
d=s+s1;
 
a1=floor(b);
a2=b-a1;
p=1;s=0;s1=0;  
 
while(a1>0)                         //работаем с целыми (для восьмеричн системы)
{
s=s+(fmod(a1,10))*p;                
p=p*8;
a1=floor(a1/10);
}
p=0.125;
while(a2>0)                                          //работаем с дробными (для восьмеричн системы)
{
s1=s1+floor(a2*10)*p;                      
p=p*0.125;
a2=a2*10-floor(a2*10);
}
c=s+s1;
e=d*c;
cout<<"otvet\n"<<e;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 10:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Умножить и вывести в 10 СС 2 числа в Двоичной и Восьмеричной системе (Пожалуйста, исправьте программу!) (C++):

Поменять порядок цифр натурального числа N, представленного в восьмеричной системе счисления, на обратный - C++
Всем доброго дня ! Это моя первая циклическая задача подскажите где ошибки?? #include &lt;iostream&gt; using namespace std; int...

Заменить все встречающиеся в тексте числа на эти же числа, но в двоичной системе счисления - C++
На планете Роботов очень не любят десятичную систему счисления, поэтому они попросили Вас написать программу, которая заменяет все...

Обьяснить представление числа в двоичной системе - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;iomanip&gt; #include &lt;windows.h&gt; #include...

Оформить вывод числа в двоичной системе счисления - C++
Уважаемые программисты! Помогите правильно оформить вывод числа в двоичной системе счисления, необходимо сделать это именно с помощью...

Проверить правильность ввода числа в двоичной системе счисления - C++
Дано число в двоичной системе счисления. Проверить правильность ввода этого числа (в его записи должны быть только символы 0 и 1). Если...

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

1
vua72
416 / 416 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
28.01.2013, 01:04 #2
У вас на входе два десятичных, вы их переводите в 2 и 8 а потом умножаете. Смысл телодвижений в чем?
То ли вы не поняли задание, то ли вы неправильно реализовали.
Если у вас на входе числа именно в таком формате, то ваша программа работает неправильно.
Перевод 10-2-10 реализован неправильно? для дробной части
C++
1
2
3
4
5
6
7
8
9
tmp = a2; float eps = 1;
    while (eps > 1e-6) //точность, работаем с дробными (для двоичн системы)
    {
        tmp *= 2;
        s1 += p * floor(tmp);
        p = p * 0.5;
        eps = a2 - s1;
        tmp -= floor(tmp);
    }
Добавлено через 29 минут
Для целой части тоже не работает у вас.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int t = (int) a1;
    do                      //работаем с целыми (для двоичн системы)
    {
        p*=2;
        cout <<(t /=  2)<<endl;
    }while (t != 1); // максимальная степень
    float tmp=0;
    while (p > 0)    //работаем с целыми (для двоичн системы)
    {
        tmp=fmod(a1, 2);
        s = s + tmp * p;
        p/=2;
        a1 = floor(a1 / 2);
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 01:04
Привет! Вот еще темы с ответами:

исправьте программу пожалуйста - C++
не переписывает строки меньше 50 дважды ,меньше 70 часть копирует и переносит на другую строку,завтра курсовую защищать с этой программой ...

Исправьте программу пожалуйста - C++
Почему последнюю строку в итоге в консоли выводит два раза, в чём ошибка и как это исправить? ...

Разработать программу выполнения арифметических операций в двоичной системе счисления - C++
Разработать программу выполнения арифметических операций в двоичной системе счисления. Исходные данные должны вводиться пользователем с...

Запись в бинарный файл в бинарном режиме: будут ли числа записаны в двоичной системе счисления? - C++
Если я записываю случайное четырехзначное число в бинарный файл, открываю его в бинарном режиме, то будут ли те числа записаны в двоичной...


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

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

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