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

C для начинающих

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

Целое десятичное преобразовать в двоичное, записать задом-наперед и перевести обратно в десятичное - C (СИ)

22.10.2014, 13:50. Просмотров 673. Ответов 4
Метки нет (Все метки)

Всем привет
Пожалуйста помогите разобраться
Целое положительное число m записывается в двоичной системе счисления, и разряды в этой записи переставляются в обратном порядке. Получившееся двоичное число переводится в десятичную систему счисления, и принимается за значение функции F(m). Например, m=41, F(m)=37. Написать и протестировать функцию.

Код есть, но глаза уже замыленые и не видят из-за чего программа зацикливается
Кликните здесь для просмотра всего текста
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 <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
 
int main()
{
    int func(a)
    {
        int inv = 0,
            fm = 0,
            x1 = 0,
            step = 0;
 
        while (a >= 1)
        {
            inv = (inv * 10) + (a % 10);
            a = a / 10;
        };
 
        while (inv >= 1)
        {
            x1 = (x1 * 10) + (inv % 2);
            inv = inv / 2;
        };
 
        while (x1 >= 1);
        {
            fm = fm + ((x1 % 10) * pow(2, step));
            step += 1;
        };
        return fm;
    }
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int m;
    printf("\n \t Программа целое положительное число m записывается "
           "\n в двоичной системе счисления, и разряды в этой записи "
           "\n переставляются в обратном порядке. Получившееся двоичное"
           "\n  число переводится в десятичную систему счисления и "
           "\n выводится на экран."
           "\n \t Введите m: ");
    scanf("%i", &m);
    printf("Результат преобразования: %i", func(m));
    return 0;
}

Заранее очень признателен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2014, 13:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Целое десятичное преобразовать в двоичное, записать задом-наперед и перевести обратно в десятичное (C (СИ)):

Преобразовать десятичное число в двоичное - C (СИ)
Vообщем немного не стандартная задача. Мне нужно преобразовать десятичное число в двоичное. И представить это двоичное число в 16-битной...

Перевести двоичное число в десятичное - C (СИ)
Введите целое число, содержащее только 0 и 1 (т.е. &quot;двоичное&quot; целое число) и выведите его десятичный эквивалент. (Подсказка: примените...

Преобразовать введенное пользователем десятичное число в двоичное - C (СИ)
Помогите исправить прогу ПЛЗ!!! Условие: Написать программу, которая преобразует введеное пользователем десятичное число в двоичное....

Используя побитовые операции, преобразовать десятичное число в двоичное - C (СИ)
printf(&quot;Десятичное значение числа: &quot;); scanf(&quot;%d&quot;, &amp;x); a=0; do { a=a+x&amp;1; printf(&quot;\n\t%d&quot;,a); a=a&lt;&lt;1; ...

Перевести двоичное число заданное в виде строки в десятичное - C (СИ)
Перевести двойчное число в десятичное, число задается строкой, функция должна возвращать десятичное число.

Перевести десятичное число в двоичное при помощи рекурсивной функции - C (СИ)
Здравствуйте дорогие форумчане, столкнулась вот с какой проблемой: не получается написать программу которая переводит десятичное число в...

4
Move_Ahead
4 / 4 / 3
Регистрация: 21.10.2014
Сообщений: 22
22.10.2014, 14:17 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
27 и 29 строки

Добавлено через 8 минут
на этом зацикливается, потому что нету условия выхода из цикла
C++
1
(x1 % 10)
0
13Tre
0 / 0 / 0
Регистрация: 24.09.2014
Сообщений: 21
22.10.2014, 14:49  [ТС] #3
теперь не зацикливается, за что огромное спасибо)
но почему-то на шаге преобразования в двоичное число упорно пропускает нули, дописывая к числу только единички, как пофиксить, подскажите плз
багнутый цикл

C
1
2
3
4
5
6
7
8
9
10
        while (inv >= 1)
        {
            if (inv % 2 == 0)
                {
                    x1 *= 100;
                }
            else{
            x1 = (x1 * 10) + 1;
            }inv = inv / 2;
        };
0
Move_Ahead
4 / 4 / 3
Регистрация: 21.10.2014
Сообщений: 22
22.10.2014, 15:12 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
я бы таким способом преобразовывал число
C++
1
2
3
4
5
6
7
8
        int inv = 10;
        int binary_number = 0;
        int counter = 1;
        while (inv > 0) {
            binary_number += (inv % 2) * counter;
            inv /= 2;
            counter *= 10;
        }
0
13Tre
0 / 0 / 0
Регистрация: 24.09.2014
Сообщений: 21
22.10.2014, 17:32  [ТС] #5
Move_Ahead
Огрооооомнейшее спасибо!

Добавлено через 5 минут
Move_Ahead
Огрооооомнейшее спасибо!
0
22.10.2014, 17:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2014, 17:32
Привет! Вот еще темы с ответами:

Определить, содержит ли заданная строка двоичное, восьмеричное, десятичное или шестнадцатеричное число - C (СИ)
Ввести в память ПЗВМ с клавиатуры строку. В строке не более 80 символов. Определить, содержит ли заданная строка двоичное, восьмеричное,...

Считать целое десятичное число getchar-ом - C (СИ)
сразу оговорюсь я знаю про scanf(&quot;%d&quot;, &amp;count); интерисует как получить из нескольких введеных цифр число являющееся этими цифрами ...

Дано целое десятичное число a. Определить количество четных цифр в числе а - C (СИ)
Помогите написать код С. Дано целое десятичное число a. Определить количество четных цифр в числе а.

Шестнадцатиричное число перевести в десятичное и вывести на экран - C (СИ)
1)Шестнадцатиричное число перевести в десятичное и вывести на экран. (Писать надо на С.) Я пытался делать через switch, { case...


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

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

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