Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
1

Программа, переводящая число из одной системы счисления в другую

28.05.2014, 11:41. Показов 3059. Ответов 4
Метки нет (Все метки)

Вопрос заключается в следующем. По условиям задачи, мне необходимо перевести число из двоичной системы счисления в десятичную. Я вроде знаю , как это делается, но оформление кода мне почему-то вообще непонятно
for (int r = 1; var > 0; r *= 2)
{
result += (var % 10) * r;
var /= 10;
}

Можете пояснить, что тут что?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main()
{
   int var, result = 0;
   
   cout << "Vvedite dvoichnoye chislo: ";
   cin >> var;
   for (int r = 1; var > 0; r *= 2)
   {
      result += (var % 10) * r;
      var /= 10;
   }
   
   
   cout << "Desyatichniy ekvivalent raven: " << result << endl;
 
   return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2014, 11:41
Ответы с готовыми решениями:

Необходима программа переводящая число в другую систему счисления
Составить алгоритм решения ( и текст программы), реализующий перевод из одной системы счисления в...

Программа перевода из одной системы счисления в другую
Написал консольную программу для перевода чисел из одной системы счисления, в другую Пишу сюда...

Программа перевода из одной системы счисления в другую
Господа .... очень нужна помощь ... мне необходимо написать программу по переводу из любой сс(&lt;16)...

Перевести число из одной системы счисления в другую
Ребят, помогите, уже неделю бьюсь головой об ноут... Нам дали задачу написать прогу, которая будет...

4
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
28.05.2014, 12:10 2
цикл до момента, когда введенное число будет равно 0
каждое следующее r в два раза больше предидущего
C++
1
for (int r = 1; var > 0; r *= 2)
к переменной result прибавляется результат вычисления (var % 10) * r - остаток от деления на 10 умноженный на r. отстаток может быть 0 или 1
C++
1
 result += (var % 10) * r;
деление числа на 10 без остатка, "отрезаем" последнюю цифру в числе
C++
1
 var /= 10;
1
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
28.05.2014, 12:57  [ТС] 3
kasan,
А можно на примере какого-нибудь числа это объяснить?
Пожалуйста-пожалуйста)
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
28.05.2014, 13:17 4
bazzinga13,
возьмем 42, в двоичной системе это 101010 (такое число и вводим)
теперь var = 101010
заходим в цикл
------------------
r=1
вычисляем (var%10)*r; var%10 будет 0, это выражение фактически говорит нам какая последняя цифра у нашего числа (сейчас это 0). 0*r будет 0. Прибавляем 0 к result. В result у нас пока 0.

var /= 10
деление числа на 10 без остатка, "отрезаем" последнюю цифру в числе. после этого действа var=10101
------------------
след. итерация, r=2
вычисляем (var%10)*r; var%10 будет 1 (последняя цифра числа var, помним, что наше var=10101)
1*r = 2. Прибавляем 2 к result. В result у нас 2.

var /= 10
деление числа на 10 без остатка, "отрезаем" последнюю цифру в числе. после этого действа var=1010
------------------
след. итерация, r=4 (по условию цикла каждое следующее r в два раза больше предидущего)
вычисляем (var%10)*r; var%10 будет 0 (последняя цифра числа var, помним, что наше var=1010)
0*r = 0. Прибавляем 0 к result. В result у нас 2.

var /= 10
деление числа на 10 без остатка, "отрезаем" последнюю цифру в числе. после этого действа var=101
------------------
след. итерация, r=8 (по условию цикла каждое следующее r в два раза больше предидущего)
вычисляем (var%10)*r; var%10 будет 1 (последняя цифра числа var, помним, что наше var=101)
1*r = 8. Прибавляем 8 к result. В result у нас 2+8=10.

var /= 10
деление числа на 10 без остатка, "отрезаем" последнюю цифру в числе. после этого действа var=10
------------------
след. итерация, r=16 (по условию цикла каждое следующее r в два раза больше предидущего)
вычисляем (var%10)*r; var%10 будет 0 (последняя цифра числа var, помним, что наше var=10)
1*r = 0. Прибавляем 0 к result. В result у нас 10.

var /= 10
деление числа на 10 без остатка, "отрезаем" последнюю цифру в числе. после этого действа var=1
------------------
след. итерация, r=32 (по условию цикла каждое следующее r в два раза больше предидущего)
вычисляем (var%10)*r; var%10 будет (последняя цифра числа var, помним, что наше var=1)
1*r = 32. Прибавляем 32 к result. В result у нас 10+32=42.

var /= 10
деление числа на 10 без остатка, "отрезаем" последнюю цифру в числе. после этого действа var=0
------------------
поскольку var=0 выходим из цикла (потому что не выполняется условие цикла var > 0)
печатаем result
1
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
28.05.2014, 13:26  [ТС] 5
kasan, Спасибо огромное за такой подробный ответ, теперь все понятно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2014, 13:26

Перевести число из одной системы счисления в другую
Задание такое: Перевести исходное число, представленное в двоичной системе счисления, в пятеричную...

Программа для перевода из одной системы счисления в другую
Пользователь задает 3 параметра: число в p-чной системе счисления, p, и систему счисления, в...

Программа по переводу чисел из одной системы счисления в другую
Ребят, помогите, пожалуйста, разобраться в программе (что за переменные, для чего циклы и т.п.)....

Программа для перевода из одной системы счисления в другую
Короче нуна прога чтобы переводить из одной системы счисления в другую системы 2,8,10,16 =)...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru