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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
bazzinga13
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
28.05.2014, 11:41     Программа, переводящая число из одной системы счисления в другую #1
Вопрос заключается в следующем. По условиям задачи, мне необходимо перевести число из двоичной системы счисления в десятичную. Я вроде знаю , как это делается, но оформление кода мне почему-то вообще непонятно
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kasan
Чорумфанин
337 / 337 / 185
Регистрация: 06.03.2014
Сообщений: 872
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;
bazzinga13
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
28.05.2014, 12:57  [ТС]     Программа, переводящая число из одной системы счисления в другую #3
kasan,
А можно на примере какого-нибудь числа это объяснить?
Пожалуйста-пожалуйста)
kasan
Чорумфанин
337 / 337 / 185
Регистрация: 06.03.2014
Сообщений: 872
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
bazzinga13
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
28.05.2014, 13:26  [ТС]     Программа, переводящая число из одной системы счисления в другую #5
kasan, Спасибо огромное за такой подробный ответ, теперь все понятно.
Yandex
Объявления
28.05.2014, 13:26     Программа, переводящая число из одной системы счисления в другую
Ответ Создать тему
Опции темы

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