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

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

Войти
Регистрация
Восстановить пароль
 
Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 222
#1

Функция для конвертирования систем счисления. Не выходит :( - C++

31.03.2013, 16:21. Просмотров 410. Ответов 2
Метки нет (Все метки)

Помогите решить задачу:
Написать функцию, которая получает в качестве аргументов целое положительное число и систему счисления, в которую это число должно переводится (системы счисления от 2 до 36). Например, при переводе числа 27 в систему счисления 16 должно получиться 1B; 13 в 5-ю - 23; 35 в 18-ю - 1H.

Если система счисления до 10, то все получается, если уже выше...
Я понимаю, что то делаю не правильно. Вот подскажите, в каком направлении двигаться ))

Мои потуги:

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
using namespace std; 
 
 
int Convert (int a, int b);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "russian");
    int x;
    x=Convert (15, 16);
    cout<<x<<endl;
    _getch();
    return 0;
}
int Convert (int a, int b)
{
    setlocale (LC_ALL, "russian");
    int o=0, k=1;
    if (b<10)
    {
        do
        {
            o+=a%b*k;
            a/=b;
            k*=10;
        }
        while (a);
    }
    if (b>10)
    {
        do
        {
            o+=a%b*k;
            a/=b;
            k*=10;
        }
        while (a);
        switch (b=10)
        {
        case 10: 'A';
            break;
        default:
            cout<<"Не верный ввод!"<<endl;
        }
        switch (b=11)
        {
        case 10: 'A';
        case 11: 'B';
            break;
        default:
            cout<<"Не верный ввод!"<<endl;
        }
        switch (b=13)
        {
        case 10: 'A';
        case 11: 'B';
        case 12: 'C';
            break;
        default:
            cout<<"Не верный ввод!"<<endl;
        }
        switch (b=14)
        {
        case 10: 'A';
        case 11: 'B';
        case 12: 'C';
        case 13: 'D';
            break;
        default:
            cout<<"Не верный ввод!"<<endl;
        }
        switch (b=15)
        {
        case 10: 'A';
        case 11: 'B';
        case 12: 'C';
        case 13: 'D';
        case 14: 'E';
            break;
        default:
            cout<<"Не верный ввод!"<<endl;
        }
        switch (b=16)
        {
        case 10: 'A';
        case 11: 'B';
        case 12: 'C';
        case 13: 'D';
        case 14: 'E';
        case 15: 'F';
            break;
        default:
            cout<<"Не верный ввод!"<<endl;
        }
    }
    return o;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2013, 16:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция для конвертирования систем счисления. Не выходит :( (C++):

Функция перевода систем счисления - C++
Написать функцию с параметром перевода десятичного числа из системы с основанием меньше 10 в десятичную систему счисления

функции для перевода из разных систем счисления - C++
подскажите функции для перевода из разных систем счисления Добавлено через 1 час 19 минут А такая вообще есть, и если нед то как...

Программа обучения переводу чисел из десятичной системы счисления в 2 10 и 16 систем счисления - C++
дали задание составить программу нужно чтобы на экран выводилось это: Программа обучение переводу чисел из десятичной систем...

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

перевод систем счисления - C++
1. Задание: Напишите программу перевода чисел из 2 системы в 10. 2.Задание: Напишите программу выполнения арифметических операций в...

Конвертер систем счисления в С++ - C++
Помогите, пожалуйста, написать конвертер систем счисления на С++. Он должен переводить числа из 8-ричной СС в 16-ричную с 4 разрядами....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IrineK
Заблокирован
31.03.2013, 16:39 #2
Когда-то давно...

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
#include <iostream>
using namespace std;
 
char* itob(int num, char* buffer, int base)
{
    if (!num) 
       return '\0';
    char res;
    int i, LEN = strlen(buffer);
    if(num%base > 9) res = (char)(num%base-10)+'A';
        else res = (char)(num%base)+'0';
    
    for(i=LEN;i>-1;i--)
        buffer[i+1]=buffer[i];
    buffer[0]=res;
 
    itob(num/base, buffer, base);
    return buffer;
}
 
 
int main()
{       
    int n,b;
    while(1)
    {   cout<<"n = ";
        cin>>n;
        cout<<"b = ";
        cin>>b;
        char buf[80]="";
        itob(n,buf,b);
        cout<<buf<<"\n";
    }
    return 0;
}
1
Аццкий Прогер
21 / 10 / 4
Регистрация: 07.01.2013
Сообщений: 222
31.03.2013, 18:37  [ТС] #3
Хороший вариант, короткий и функциональный.
Обязательно разберусь в нем. Но есть одно но, мою задачу так решать нельзя, мы еще не проходили строки
Отсюда вопрос, как переделать мой вариант, не используя строки?

И аргументами функции, могут быть только два числа: 1. переводимое число; 2. система счисления.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2013, 18:37
Привет! Вот еще темы с ответами:

Перевод систем счисления - C++
Здравствуйте,помогите пожалуйста доработать программу перевода числа в разные системы счисления.Нужно чтобы заместо цифр 10 11 12 13 14...

Перевод систем счисления - C++
Здраствуйте, на входе имеется некое десятеричное число (примеры:1 / 2,8 / 0,123456) как перевести в другую систему счисления пробовал...

Рекурсивная функция для перевода данного натурального числа в заданную систему счисления - C++
Составить рекурсивную функцию для перевода данного натурального числа в р-ичную систему счисления (2&lt;= р&lt;= 9). Только начали проходить...

перевод чисел из систем счисления - C++
Составить программу перевода чисел из десятичной системы счисления в систему с основанием: 12; 31; 3; и программу обратного перевода


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

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

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