Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Помогите написать программу на с++ для перевода чисел из системы счисления (http://forum.oszone.net/showthread.php?t=255010)

vanek48ru 26-02-2013 21:28 2099689

Помогите написать программу на с++ для перевода чисел из системы счисления
 
Помогите пожалуйста.Напишите программу на с++ которая выполняет перевод числа из системы счисления с заданным основанием Р(где Р 2...9) в десятичную систему счисления.На вход программы подается основание Р,число Х в системе счисления с заданным основанием.В числе Х количество цифр не превосходит 9.

ViRTaCe 27-02-2013 01:02 2099858

В интернете хватает примеров с переводом в разные системы исчисления, думаю не составит труда интерпретировать их на все системы от 2 до 9.

vanek48ru 27-02-2013 14:56 2100293

Да я смотрел их но у меня не получается сделать алгоритм перевода...Кому не сложно помогите

ViRTaCe 27-02-2013 15:07 2100303

Какой именно момент тебе не ясен?

vanek48ru 27-02-2013 15:24 2100318

Как создать формулу для перевода...
Допустим Ввожу основание
Код:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <windows.h>
using namespace std;
int main ()
{
    char str [64];
    int p;   
    int s=0; 
    CharToOem("Введите основание P",str);
    cout << str;
    char x[10];
    CharToOem("Введите число ",str);
    cout << str;
    cin >> p;
    cin.getline (x,10);
    int i;
  int count = 0;
        for (i = 0; x[i] != '\0'; i++)
        {
                if ( x[i] != ' ' )
                        count++;
           
    }
       
    cout << count << endl;

    system("pause");
    return 0;
}

Вот получается количество символов подсчитано...Дальше я не знаю как обратиться к каждому символу отдельно по идее так но не получается
Код:

int  a[const]
for(int n=1;n<=9;n++){

s=s+a[i]*P^(const-i)
}
cout << s

И почему-то после того как я ввожу основание он выдает что введенное число х =0 и выключается

ViRTaCe 27-02-2013 17:23 2100431

Ну вообще если честно не понятно, зачем тебе обращаться к каждому символу? Алгоритм перевода такой, что надо делить число пока не получился остаток меньше делителя, после ответ опять делить на основание, и так далее, записывая остатки в обратном порядке получаем нужное нам число, в нужной системе исчисления. Вот первая ссылка в гугле, достаточно подробно расписан алгоритм.

vanek48ru 27-02-2013 20:16 2100553

Это если из десятичной в системы в заданным основанием а мне наоборотДля того что бы перевести допустим 1011 в двоичной в десятичную нужно 1*2^3+0*2^2+1*2^1+1*2^0

ViRTaCe 27-02-2013 23:01 2100668

Вот функция перевода. Библиотеку math.h не забудь подключить.
Код:

int ConvertToDecimal(int number, int base)
{
        int count = 0, result = 0;
        do
        {
                int mod = number % 10;
                result += pow(base, count)*mod;
                count++;
                number /= 10;
        }while(number);
        return result;
}


vanek48ru 28-02-2013 17:51 2101238

Спасибо большое выручил)


Время: 07:41.

Время: 07:41.
© OSzone.net 2001-