Показать полную графическую версию : [решено] Помогите написать программу на с++ для перевода чисел из системы счисления
vanek48ru
26-02-2013, 21:28
Помогите пожалуйста.Напишите программу на с++ которая выполняет перевод числа из системы счисления с заданным основанием Р(где Р 2...9) в десятичную систему счисления.На вход программы подается основание Р,число Х в системе счисления с заданным основанием.В числе Х количество цифр не превосходит 9.
В интернете хватает примеров с переводом в разные системы исчисления, думаю не составит труда интерпретировать их на все системы от 2 до 9.
vanek48ru
27-02-2013, 14:56
Да я смотрел их но у меня не получается сделать алгоритм перевода...Кому не сложно помогите
Какой именно момент тебе не ясен?
vanek48ru
27-02-2013, 15:24
Как создать формулу для перевода...
Допустим Ввожу основание
#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 и выключается
Ну вообще если честно не понятно, зачем тебе обращаться к каждому символу? Алгоритм перевода такой, что надо делить число пока не получился остаток меньше делителя, после ответ опять делить на основание, и так далее, записывая остатки в обратном порядке получаем нужное нам число, в нужной системе исчисления. Вот (http://inf.e-alekseev.ru/text/Schisl_perevod.html) первая ссылка в гугле, достаточно подробно расписан алгоритм.
vanek48ru
27-02-2013, 20:16
Это если из десятичной в системы в заданным основанием а мне наоборотДля того что бы перевести допустим 1011 в двоичной в десятичную нужно 1*2^3+0*2^2+1*2^1+1*2^0
Вот функция перевода. Библиотеку 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
Спасибо большое выручил)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.