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

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

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

преобразование из 10 значной систмы в 2 значную - C++

22.09.2009, 23:34. Просмотров 716. Ответов 6
Метки нет (Все метки)

Уважаемые програмисты в коледже задали задачу сделать преобразование из 10 значной систмы в 2 значную.Подскажите плиз чтото я совсем запутался...вот набросил кусок кода а как далше...знаю что нужен цыкл который каждый раз будет делить число на два и сверять с остатком от деления...и помещать данные в массив.идею я знаю а вот с реалезачией...подскажите если не сложно...
Код
#include <iostream>
using namespace std;
int main()

{
    int n,n2;
    n2 = 2;
               cin >> n;
                     
if( n % n2 == 0) {
                   n = 0;                  
}

else {
        n = 1;
      
}
 
    cout << n;
    cin.get();    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2009, 23:34     преобразование из 10 значной систмы в 2 значную
Посмотрите здесь:
Как объявить 10 значную переменную такой как 9876543210 C++
Программа с 4-х значной логикой Lisp
Калькулятор в 12-значной системе счисления PascalABC.NET
Функция 1-ой переменной k-значной логики. Построить таблицу истинности и найти и полином
Pascal Символическое дифференцирование-ввод формулы в связный список, преобразование в ПОЛИЗ, обратное преобразование
Нормальное преобразование/ортогональное преобразование
Z-преобразование и преобразование Фурье
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lexus_ilia
3046 / 922 / 34
Регистрация: 24.09.2008
Сообщений: 1,530
23.09.2009, 04:43     преобразование из 10 значной систмы в 2 значную #2
хм, я вот совсем недавно в колледже реализовывал данное задание и решил что использовать массив немного не красиво поэтому решил его вот так (переводит как целый, так и дробные числа, но не отрицательные, т.е. >0):
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <stdio.h>
#include <stdlib.h>
int fun(int,int);
int fun1(double,double,int);
 
int main()
{
    double a;
    int b;
    printf("VVedute 4uclo ");
    scanf("%lf",&a);
    system("cls");
    b=a;
    if ((a-b)==0) 
    {
        printf("4uclo V dec9tu4nou= %lf \n",a);
        printf("A V dvou4noi= ");
    }
    if ((a-b)!=0) fun1(a,b,b);
    else fun(b,0);
    printf("\n");
    system("pause");
    return 0;
}
 
int fun(int b,int a)
{
    a = b;
    b /=2;
    if (b!=0) fun(b,a);
    if (a%2!=0) printf("1");
    else printf("0");
    return 0;
}
 
 
int fun1(double a,double b,int c)
{
    int eps,countEps;
    b=b-a;
    system("cls");
    printf("Vvedute to4noct' perevoda ");
    scanf("%d",&eps);
    system("cls");
    printf("4uclo V dec9tu4nou= %lf \n",a);
    printf("A V dvou4noi= ");
    fun(c,0);
    countEps=0;
    printf(".");
    do
    {
        b *=2;
        if (b-1>0) 
        {
            printf("1");
            b -=1;
        }
        else
            if (b-1<0)
                printf("0");
            else
            {
                printf("1");
                b -=1;
            }
        ++countEps;
 
 
    }while( (b!=0) && (countEps<=eps));
    return 0;
}
Добавлено через 20 секунд
Может решение бредовое, но вроде простое.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.09.2009, 05:10     преобразование из 10 значной систмы в 2 значную #3
lf используется только для scanf, так как printf и scanf функции разные а не симметричные
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
23.09.2009, 10:40     преобразование из 10 значной систмы в 2 значную #4
Paul_AG,
Цитата Сообщение от Paul_AG Посмотреть сообщение
вот набросил кусок кода
детотак
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
//=========================================================
int main ()
{   
short d; 
size_t i = sizeof (short) * sizeof (size_t);//joke
 
    std::cout << " Enter your decimal number : ";
    std::cin >> d;
 
    //------------------------------------
    std::cout << " Binary number is \n  ";
    while ( i-- > 0 )
        std::cout << ( d >> i ) % 2;
 
system ( "pause > nul" );
return EXIT_SUCCESS;
}
//=========================================================
lexus_ilia
3046 / 922 / 34
Регистрация: 24.09.2008
Сообщений: 1,530
23.09.2009, 13:05     преобразование из 10 значной систмы в 2 значную #5
accept, А можно поподробней в чём проблема ? Я сделал так что-бы число переводилось и ответ был написан на экран, что не так ?
Paul_AG
6 / 6 / 0
Регистрация: 16.04.2009
Сообщений: 32
23.09.2009, 17:51  [ТС]     преобразование из 10 значной систмы в 2 значную #6
Нет нет все правилно)спасибо большое)))только во втором коде не понял строку size_t i = sizeof (short) * sizeof (size_t);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2009, 04:15     преобразование из 10 значной систмы в 2 значную
Еще ссылки по теме:
C# Быстрое преобразование Фурье и ошибка "Неявное преобразование типа"
C++ Преобразование типа или преобразование типа указателя ?

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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.09.2009, 04:15     преобразование из 10 значной систмы в 2 значную #7
Цитата Сообщение от lexus_ilia
accept, А можно поподробней в чём проблема ?
если у тебя double, то не надо в printf ставить l перед e, f, g
если у тебя float, то тоже не надо
а вот если у тебя long double, то обязательно надо поставить l

если неправильно подавать спецификаторы, это undefined behavior, то есть оно может сработать, а может выпасть

для scanf'а всё вообще по-другому, там e, f, g - принимаются во float *, поэтому, необходимо ставить l, которое означает double *
а если long double * у тебя там, то нужно вообще ставить L
Yandex
Объявления
24.09.2009, 04:15     преобразование из 10 значной систмы в 2 значную
Ответ Создать тему
Опции темы

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