1 Востаннє редагувалося mixon-21 (17.04.2013 18:13:32)

Тема: система числення в функціях.

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

2

Re: система числення в функціях.

Можна піти алгоритмом ділення на основу системи числення (ОСЧ).
Суть буде у тому, щоб ділити число на ОСЧ, поки отримана частка не стане меншою від ОСЧ. Коли ж це досягнуто, наступна ітерація ділення дасть цілу частку нуль.
Числом у даній системі числення буде послідовність цифр, що позначали залишок від ділення, у зворотньому порядку. Цифри, відповідно, можуть виражатися як арабськими цифрами, так і літерами (для систем із основою понад 10). Підбір цифри у відповідній системі можна організувати окремою функцією.

3 Востаннє редагувалося mixon-21 (17.04.2013 19:06:46)

Re: система числення в функціях.

Десь так. Правильно???????


#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL,"rus");
int a,b;
cout<<"Введите число";
cin>>a;
cout<<"Выберите систему счисления";
cin>>b;
while(a)
    if(a<b)    {
        a%=b;
    cout<<a;
    }
    else
        a/=b;
}


Тільки виходить вічний цикл. Треба щось допрацювать.

4

Re: система числення в функціях.

Візьміть код в теги code: поважайте учасників форуму.

5

Re: система числення в функціях.

mixon-21 написав:

Десь так. Правильно???????


#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL,"rus");
int a,b;
cout<<"Введите число";
cin>>a;
cout<<"Выберите систему счисления";
cin>>b;
while(a)
    if(a<b)    {
        a%=b;
    cout<<a;
    }
    else
        a/=b;
}


Тільки виходить вічний цикл. Треба щось допрацювать.

додати умову завершення циклу, бо ж у вашому коді змінна 'а' завжди існує - тому і зациклило =)
і взагалі, бажано все, що входить у while взяти в дужки (про всяк випадок), тому що компілятор не завжди може зрозуміти вас правильно

Подякували: mixon-211

6 Востаннє редагувалося mixon-21 (17.04.2013 22:30:54)

Re: система числення в функціях.

?????

7 Востаннє редагувалося muroclav (18.04.2013 00:17:58)

Re: система числення в функціях.

напишіть наприклад так:

while(a!=0 && b!=0)

або так

while(a!=0)

8 Востаннє редагувалося mixon-21 (18.04.2013 11:14:16)

Re: система числення в функціях.

Підскажіть з розробки програми. Пліз.
[*]Написати функцію, яка отримує в якості аргументів ціле позитивне число і систему числення, в яку це число повинне перекладається (системи числення від 2 до 36). Наприклад, при перекладі числа 27 у систему числення 16 повинно вийти 1B; 13 в 5-у - 23; 35 у 18-у - 1H. [/*]

9

Re: система числення в функціях.

Позиційна система числення
Bartash каже те й саме що й в статті.

10

Re: система числення в функціях.

Мало би бути щось на зразок такого:

const char* convert(int num, unsigned int sys)
{
    if( sys<2 || sys>36)
        return "";
        
    string res;
    while(num)
    {
        res += digit(num % sys, sys);
        num /= sys;
    }
    
    return string(res.rbegin(), res.rend()).c_str();
}

На функцію digit() у мене скінчився цикорій.

11

Re: система числення в функціях.

#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL,"rus");
    
    int a;
    int b;
cout << "Введите число";
cin >> a;
cout << "Выберите систему счисления";
cin >> b;
//Пока a не равно 0,
while (a) {
    cout << a%b;    
    //Записываем в a частное от деления a на b
    a/= b;
}
    }

Підскажіть будь-ласка як перевернути результат????

12

Re: система числення в функціях.

mixon-21 написав:

як перевернути результат?

Як це зрозуміти?

13

Re: система числення в функціях.

mixon-21 написав:

Підскажіть будь-ласка як перевернути результат????

У тій реалізації - ніяк.
Потрібна проміжна змінна.
Плюс наведений варіант не виведе літери для систем із основою понад 10.