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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
bazzinga13
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
#1

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

28.05.2014, 11:41. Просмотров 1591. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 11:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа, переводящая число из одной системы счисления в другую (C++):

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

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

Программа для перевода из одной системы счисления в другую. - C++
Помогите пожалуйста написать программу для перевода чисел из одной системы в другую. Используемые системы счисления: от двоичной до...

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

Перевод из одной системы счисления в другую - C++
Составить программу перевода натурального числа из позиционной системы счисления с основанием m в позиционную систему счисления с...

Перевод из одной системы счисления в другую - C++
Осуществить перевод введенного с клавиатуры числа в двоичной, шестнадцатерич-ной, восьмеричной или десятичной системах счисления в другие...

4
kasan
Чорумфанин
337 / 337 / 185
Регистрация: 06.03.2014
Сообщений: 881
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
bazzinga13
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
28.05.2014, 12:57  [ТС] #3
kasan,
А можно на примере какого-нибудь числа это объяснить?
Пожалуйста-пожалуйста)
0
kasan
Чорумфанин
337 / 337 / 185
Регистрация: 06.03.2014
Сообщений: 881
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
bazzinga13
0 / 0 / 0
Регистрация: 17.05.2014
Сообщений: 10
28.05.2014, 13:26  [ТС] #5
kasan, Спасибо огромное за такой подробный ответ, теперь все понятно.
0
28.05.2014, 13:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 13:26
Привет! Вот еще темы с ответами:

Перевод из одной системы счисления в другую - C++
Помогите разобраться с переводом из любой системы счисления в любую. Хотел составить программу типа: Основание системы (вход): 15 ...

Перевод из одной системы счисления в другую - C++
Суть задачи такова: Написать программу , которая переводит число из 2-й системы счистления в 12-ю через 10-ю. Заранее спасибо!)Язык С++ ...

Перевод из одной системы счисления в другую от 2 до 36 - C++
Помогите пожалуйсто, сколько сижу ничего стоющего не приходит в голову! Дано целое неотрицательное число в I-ричной системе счисления....

Перевод из одной системы счисления в другую - C++
Посмотрите, пожалуйста, кому не сложно код в с++. При компиляции выдает ошибку invalid function declaration Текст задачи: Десятичное...


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

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

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