Форум программистов, компьютерный форум CyberForum.ru

Нужно исправить ошибку - C++

Восстановить пароль Регистрация
 
Desmut
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 5
22.01.2014, 18:49     Нужно исправить ошибку #1
При переводе из 10 в 2 систему счисления выдает иногда неправильный ответ. Как это можно исправить?
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
#include <iostream>
#include <cmath>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{setlocale(0,"");
int i, b;
double c;
long double a,k;
cout<<"Введите число в 10-ой системе счисления: ";
cin >>a;
k=modf(a,&a);
   for(i=0;a>0;i++)
     {b = int(a) % 2;
        a = (a-b)/2;
        c += b * pow(10,i);}
cout<<"Вывод числа в 2-ой системе счисления: "<<c;
if(k!=0)
{cout<<".";
while (c!=0)
 {c=k*2;
if (c!=0)
cout <<int(c);
k=modf(c,&a);}
return 0;}
return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2014, 18:49     Нужно исправить ошибку
Посмотрите здесь:

Нужно исправить ошибку C++
C++ Нужно исправить ошибку в коде!
C++ Нужно исправить ошибку
Нужно исправить ошибку C++
C++ Нужно найти ошибку и исправить ее
C++ Нужно исправить ошибку
Нужно исправить ошибку C++
C++ Нужно найти и исправить ошибку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
22.01.2014, 21:30     Нужно исправить ошибку #2
У Вас не инициализирована переменная c.
C++
1
2
3
4
5
6
7
8
9
10
double c=0.0L;
//double c;  
 
// ...
 
for(i=0;a>0;i++)
{
    // ... 
    c += b * pow(10.0L,i);
}
Для двоичных цифр лучше использовать массив char[]. Иначе для больших чисел точности типа double окажется недостаточно - см. рис.
Миниатюры
Нужно исправить ошибку  
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
22.01.2014, 21:31     Нужно исправить ошибку #3
И что получится для отрицательных чисел ( a < 0 ) ?
Yandex
Объявления
22.01.2014, 21:31     Нужно исправить ошибку
Ответ Создать тему
Опции темы

Текущее время: 21:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru