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

Перевод чисел из 5->10 c.c - C++

Восстановить пароль Регистрация
 
mriceMan
0 / 0 / 0
Регистрация: 30.11.2009
Сообщений: 18
18.10.2011, 15:04     Перевод чисел из 5->10 c.c #1
Всем привет. Помогите пожалуйста разобраться с листингом программы, которая переводит числа из пятеричной системы счисления в десятичную. Программа рабочая, но мне не совсем понятен механизм работы, если можно то прокомментируйте пожалуйста каждую строчку. Особенно интересна 16 строка, почему num[i] - 48. Заранее спасибо )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstring>
 
 
 
int main()
{
        char num[20];
        cout << "Введите число в пятеричной системе счисления: ";
        cin.getline(num, 20);
        long answer = 0;
        int len = strlen(num);
        long pow = 1;
        for (int i = len - 1; i >= 0; i--)
        {
                answer += pow * (num[i] - 48); 
                pow *= 5;
        }
        cout << "(" << num << ")5 = " << answer;
        cin.get();
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2011, 15:04     Перевод чисел из 5->10 c.c
Посмотрите здесь:

C++ перевод чисел(с++)
C++ Перевод чисел из 10 сс в 8 сс на С++
C++ Рекурсивный перевод чисел
перевод действительных чисел C++
Перевод чисел из 10 СС в 2 СС C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
18.10.2011, 15:06     Перевод чисел из 5->10 c.c #2
Цитата Сообщение от mriceMan Посмотреть сообщение
почему num[i] - 48.
Потому что вы загоняете цифры в массив char, в котором код цифры 0 - 48, 1-49 и т.д.
mriceMan
0 / 0 / 0
Регистрация: 30.11.2009
Сообщений: 18
18.10.2011, 15:22  [ТС]     Перевод чисел из 5->10 c.c #3
А как работают остальные строки?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
18.10.2011, 15:35     Перевод чисел из 5->10 c.c #4
Цитата Сообщение от mriceMan Посмотреть сообщение
А как работают остальные строки?
Примерно так: считали число, померяли размер, по всем циферкам пробежались и умножили на pow, сложили с результатом, изменили pow, в конце вывели результат.
mriceMan
0 / 0 / 0
Регистрация: 30.11.2009
Сообщений: 18
18.10.2011, 16:33  [ТС]     Перевод чисел из 5->10 c.c #5
Спасибо это все понятно, но я никак ни пойму почему в 16 строке именно -48 ?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
18.10.2011, 16:38     Перевод чисел из 5->10 c.c #6
Цитата Сообщение от mriceMan Посмотреть сообщение
почему в 16 строке именно -48 ?
Еще раз говорю: код нуля - 48. Чтобы из кода получить число вычитаем 48. Почему из кода? Потому что получаем ввод мы в массив char[], который хранит символы. А код символа ноль - 48. goto start
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2011, 16:48     Перевод чисел из 5->10 c.c
Еще ссылки по теме:

C++ Перевод чисел любой разрядности
C++ Перевод чисел
Перевод чисел из строки в массив чисел C++

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

Или воспользуйтесь поиском по форуму:
mriceMan
0 / 0 / 0
Регистрация: 30.11.2009
Сообщений: 18
18.10.2011, 16:48  [ТС]     Перевод чисел из 5->10 c.c #7
Спасибо, теперь все понятно
Yandex
Объявления
18.10.2011, 16:48     Перевод чисел из 5->10 c.c
Ответ Создать тему
Опции темы

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