Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Katrin35
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 45
1

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

17.11.2015, 00:43. Просмотров 1659. Ответов 1
Метки нет (Все метки)

Разработать программный продукт для перевода целого положительного числа из одной системы счисления в другую. При запуске программы пользователь указывает:
• исходную систему счисления (2-16);
• конечную систему счисления (2-16);
• число в исходной системе счисления.
После расчетов программа выводит данное число в конечной системе счисления.

Нашла программу, немножко переделала ее под свою задачу:

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
49
50
#include "stdafx.h"
#include "iostream" 
#include "conio.h"
#include "cmath"
#include <ctime>
#include <time.h> 
#include <cstdio>
#define DIG "0123456789ABCDEF"
 
using namespace std;
 
int Atoi(char *s, int p) 
{
    int i, a, digit[64] = {0};
    for(i = 0; DIG[i]; i++)
        digit[DIG[i]] = i;
    for(i = a = 0; s[i]; i++)
        a = a * p + digit[s[i]];
    return a;
}
 
void Itoa(int a, int p, char *s) 
{
   static int i = 0, n;
   if (a) 
   {
      ++i;
      Itoa(a / p, p, s);
      s[n - i--] = DIG[a % p];
   }
   else
      s[n = i] = '\0';
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int a1, a2;
    char s[1024];
    cout<<"Введите начальную систему счисления ";
    cin>>a1;
    cout<<"Введите конечную систему счисления ";
    cin>>a2;
    cout<<"Введите число ";
    cin>>s;
    Itoa(Atoi(s, a1), a2, s);
    cout << s << endl;
    _getch();
    return 0;
}
Все работает прекрасно. Вопрос в том, как именно она это делает.. В режиме отладки пыталась отследить, ничего практически не понятно.

Не могли бы вы закомментировать строчки функций Atoi и Itoa?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2015, 00:43
Ответы с готовыми решениями:

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

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

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

Программа для перевода числа из десятичной системы счисления во все существующие С++
Помогите пожалуйста. Не совсем понимаю как это правильно написать

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

1
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
17.11.2015, 08:12 2
Запишу Atoi попроще (выполняется немного медленнее, но понятнее)
Программа использует представление числа в позиционной СС (в виде полинома)
a=s0+s1p+s2p2+s3p3+...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Atoi(char *s, int p) 
{
    int a=0;
    for(i = 0; s[i]; i++) // идем по всем символам числовой строки
    {
        int n=s[i]; // взяли очередной символ
        if(n>='0' && n<='9') // если это цифровой символ
            n-='0'; // то уменьшаем его на код нуля (получим числа от 0 до 9)
        else
            n-='A'+10; // если буквенный, то уменьшаем на код 'A' (получим числа от 10 до 15)
        a = a * p + n; // вычисляем значение полинома по схеме Горнера
    }
    return a;
}
Itoa выполняет обратное преобразование путем получения остатка от деления на основание СС
a % p и преобразования его в букву по таблице.
У этой функции есть недостаток. Ее нельзя использовать повторно для преобразования нескольких чисел, т.к. не предусмотрено присвоение значения статической переменной i.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2015, 08:12

Перевод числа из одной системы счисления в другую и выполнение арифметических операций
Написать программу: Числа по основанию 2 и 8. Выполнить операцию умножения.

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

Функции для перевода числа в различные системы счисления
Здравствуйте! Подскажите пожалуйста, есть ли в С++ встроенные функции для...


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

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

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