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

Вывести двоичное число в обратном порядке - C++

Восстановить пароль Регистрация
 
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
22.08.2013, 16:38     Вывести двоичное число в обратном порядке #1
Вывести двоичное число в обратном порядке ???????///

C++
1
2
3
4
5
while(number!=0) {
    res=number%2;
    number/=secondNum;
    cout<<res<<" ";     
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2013, 16:38     Вывести двоичное число в обратном порядке
Посмотрите здесь:

Используя стек вывести числа введенные пользователем в обратном порядке элемент стека – число C++
Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке C++
C++ Для каждого числа последовательности вывести новое число, которое получится после записи цифр числа в обратном порядке
C++ Дано целое число. Вывести набор символов содержит цифры этого числа в обратном порядке
Вывести трехзначное число, полученное в результате перестановки чисел в обратном порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
22.08.2013, 17:40     Вывести двоичное число в обратном порядке #2
C++
1
2
3
4
5
6
7
8
void PrintBin(int number)
{
    if (number)
    {
        PrintBin(number / 2);
        std::cout << number % 2;
    }
}
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
22.08.2013, 17:51  [ТС]     Вывести двоичное число в обратном порядке #3
Я собираюсь написать программу которая переводит числа из десятичной сис счисления во все остальные, конечно есть там всякие
"itoa"-функции, которая решает задачу практически одной строчкой, но что моим мозгам до этого. Мне нужно самому
написать без использования подобных функций.

Так вот на данный момент я могу получить из десятичного числа двоичное

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            int number=0;
int secondNum=0;
int res=0;
 
void main(){
    cout<<"Enter number " <<endl;
cin>>number;
    cout<<"Enter notation " <<endl;
cin>>secondNum;
int digit,sum;
while(number!=0) {
    res=number%2;
    number/=secondNum;
        cout<<res<<endl;
    }
}
Это хорошо, но число 10(например) в двоичной сис моя прога выводит 0101, то есть мне надо его перевернуть. Вот и суть моего вопроса, как это сделать желательно не сильно удаляясь от моего кода.
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
23.08.2013, 00:58     Вывести двоичное число в обратном порядке #4
Занеси в массив и выведи в обратном порядке.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.08.2013, 21:22     Вывести двоичное число в обратном порядке #5
Цитата Сообщение от I love myguitar Посмотреть сообщение
Я собираюсь написать программу которая переводит числа из десятичной сис счисления во все остальные...
и в чем сложности? например, так (рекурсивно)

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
#include <iostream>
#define DIG "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ"
 
void Itoa_(unsigned a, unsigned &i, unsigned &len, unsigned base, char *s)
{
    if (a)
    {
        Itoa_(a / base, ++i, ++len, base, s);
        s[len - i--] = DIG[a % base];
    }
    else s[i] = '\0';
}
 
void Itoa(unsigned a, unsigned base, char *s)
{
    unsigned i = 0, len = 0;
    Itoa_(a, i, len, base, s);
}
 
int main()
{
    char s[1024];
    Itoa(123, 8, s);
    std::cout << s << std::endl;
    return 0;
}
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
23.08.2013, 22:00     Вывести двоичное число в обратном порядке #6
Зачем тут рекурсивная функция, если описанный тобой процесс итеративен?
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
23.08.2013, 23:41     Вывести двоичное число в обратном порядке #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <math.h>
 
int main()
{
    int num,i,k;
    std::cin>>num;
    i=k=int(log((double)num)/log(2.0));
    int *p=new int[k+1];
 
    while(num)
    {
        p[i]=num%2;
        num/=2;
        --i;
    }
 
    for(int i=0;i<k+1;i++)
        std::cout<<p[i];
 
    delete[] p;
}
можешь просто в массив впихать.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 10:53     Вывести двоичное число в обратном порядке #8
C++
1
2
3
4
5
6
7
8
9
10
template <typename T>
std::string DecToBin(T i_number)
  {
  std::string result;
  T b = static_cast<T>(1) << (sizeof(i_number)*8-1);
  do
    result.push_back(static_cast<bool>(i_number&b)+'0');
  while (b>>=1);
  return result;
  }
Добавлено через 19 минут
Если надо в обратном порядке, то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename T>
std::string DecToBinReverse(T i_number)
  {
  std::string result;
  T b = 1;
  do
    result.push_back(static_cast<bool>(i_number&b)+'0');
  while (b<<=1);
  return result;
  }
 
int _tmain(int argc, _TCHAR* argv[])
  {
  std::cout<<DecToBin<unsigned long long>(INT_MAX)<<std::endl;
  std::cout<<DecToBinReverse<unsigned long long>(INT_MAX)<<std::endl;
    return 0;
  }
А вообще всегда можно стринг перевернуть =)
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
24.08.2013, 14:23  [ТС]     Вывести двоичное число в обратном порядке #9
Всем спасибо , вроде разобрался.

Но предо мной стоит задача написать функцию, которая будет переводит число из одной системы счисления в другую(от 2 до 36). Например: из 10-й во 2-ю ; из 18-ой в 24-ю; из 27-ой в 16 и т.п.

Конечно опять же есть такая функция 'itoa' , но моя задача написать функцию без использования этой функции.
Моя же функция получается не одна и громоздкой и только для перевода из 10-ой сис. во ( 2 до 36).

То есть это только кусочек моего кода:
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
int num,secondNum;
void PrintBin(int number, int secondNum=0){
    if (number){
        PrintBin(number / 2);
        cout << number % 2;
    }
}
void PrintTer(int number, int secondNum=0){
    if (number){
        PrintTer(number / 3);
        cout << number % 3;
    }
}
void PrintFourth(int number, int secondNum=0){
    if (number){
        PrintFourth(number / 4);
        cout << number % 4;
    }
}
void PrintFifth(int number, int secondNum=0){
    if (number){
        PrintFifth(number / 5);
        cout << number % 5;
    }
}
void PrintSixth(int number, int secondNum=0){
    if (number){
        PrintSixth(number / 6);
        cout << number % 6;
    }
}
void PrintSeventh(int number, int secondNum=0){
    if (number){
        PrintSeventh(number / 7);
        cout << number % 7;
    }
}
void main(){
    cout<<"Enter number " <<endl;
    cin>>num;
    cout<<"Enter notation " <<endl;
    cin>>secondNum;
    if(secondNum==2){
        PrintBin(num,secondNum);
                    }
     if(secondNum==3){
        PrintTer(num,secondNum);
                    }
    if(secondNum==4){
    PrintFourth(num,secondNum);
                    }               
    if(secondNum==5){
    PrintFifth(num,secondNum);
                    }
    if(secondNum==6){
    PrintSixth(num,secondNum);
                    }
    if(secondNum==7){
    PrintSeventh(num,secondNum);
                    }

Ну вот собственно и мой вопрос как можно повторить функцию 'itoa'??/////
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 16:47     Вывести двоичное число в обратном порядке
Еще ссылки по теме:

Дано целое число n. Вывести двоичную запись числа в обратном порядке C++
C++ Вывести число, записанное в обратном порядке (12345 > 54321)
Ввести целое число (например 123456), а вывести в обратном порядке C++

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
24.08.2013, 16:47     Вывести двоичное число в обратном порядке #10
Цитата Сообщение от I love myguitar Посмотреть сообщение
как можно повторить функцию itoa?
в посте #5 пример приведен
Yandex
Объявления
24.08.2013, 16:47     Вывести двоичное число в обратном порядке
Ответ Создать тему
Опции темы

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