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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.83
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
#1

Функция перевода целого числа из десятичной системы в p - ичную - C++

08.02.2013, 16:17. Просмотров 3993. Ответов 22
Метки нет (Все метки)

Нужно перевести число в p - ичную систему, начиная с двоичной и до шестнадцатиричной
как дописать чтобы переводилась в 16-чной системе?(

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
 { 
 int n, p;
 cin >> n >> p;
 int ch = 0;
 for (int i = 0; n >= 1; i++)
 { 
 ch+=(n % p)* pow(10, i); 
 n/=p; 
 } 
 cout << ch;
 }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2013, 16:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция перевода целого числа из десятичной системы в p - ичную (C++):

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

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

Рекурсивная процедура перевода числа из десятичной системы счисления в двоичную - C++
3) Написать рекурсивную процедуру перевода нату¬рального числа из десятичной системы счисления в двоич¬ную.

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

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

Рекурсивная функция находящая наибольшую цифру в десятичной записи неотрицательного целого числа - C++
Описать рекурсивную функцию maxdig(N), которая находит наибольшую цифру в десятичной записи неотрицательного целого числа N. Пример:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
12.02.2013, 22:23  [ТС] #2
что никто не знает?(
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:09 #3
Никто не понял. Сформулируй вопрос нормально.
0
Feyko
2 / 2 / 0
Регистрация: 07.01.2013
Сообщений: 22
13.02.2013, 10:46 #4
с двоичной системы в шестнадцатиричную
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
program ty;
uses crt;
var i,n,l,z:integer;
s,s2,shest:string;
begin
Writeln('Введите двоичное число:');
read(s);
l:=length(s);
//удаляем нолики из начала 
for i:=1 to l do
 if s[1]='0' then
  begin
  Delete(s,1,1);
  l:=l-1;
  end
 else
  break;
//Дописываем нужное количество ноликов сначала
if (l mod 4)<>0 then
 repeat
  s:='0'+s;
  inc(l);
 until (l mod 4)=0;
//Начало основного алгоритма
z:=l div 4;
l:=1;
for i:=1 to z do //для скольки тетрад делаем
 begin
  for n:=l to (l+3) do //для 4 символов
   s2:=s2+s[n];//записываем текущую тетраду
  l:=l+4;
  if s2='0000' then shest:=shest+'0';
  if s2='0001' then shest:=shest+'1';
  if s2='0010' then shest:=shest+'2';
  if s2='0011' then shest:=shest+'3';
  if s2='0100' then shest:=shest+'4';
  if s2='0101' then shest:=shest+'5';
  if s2='0110' then shest:=shest+'6';
  if s2='0111' then shest:=shest+'7';
  if s2='1000' then shest:=shest+'8';
  if s2='1001' then shest:=shest+'9';
  if s2='1010' then shest:=shest+'A';
  if s2='1011' then shest:=shest+'B';
  if s2='1100' then shest:=shest+'C';
  if s2='1101' then shest:=shest+'D';
  if s2='1110' then shest:=shest+'E';
  if s2='1111' then shest:=shest+'F';
  s2:='';//сбрасываем значение
 end;
Writeln('Шестнадцатиричное число: ',shest);
end.
Добавлено через 7 минут
Перевод из двоичной в шестнадцатиричную
C++
1
2
3
4
5
6
7
8
void DecToBin (long num,char *bin)
{
 int i,j;
 char tmp[33];
 
 for (i=0; num; num>>=1, i++)tmp[i] = (num&1)?('1'):('0');
 for (j=0; j<i; j++) bin[j] = tmp[i-j-1];
}
0
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
14.02.2013, 14:18  [ТС] #5
Цитата Сообщение от iama Посмотреть сообщение
Никто не понял. Сформулируй вопрос нормально.
функция для перевода целого десятичного числа в P - ичную систему счисления, p из [2..16]

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

Добавлено через 2 минуты
и какие тесты можно придумать для модульного тестирования этой функциии? кроме самых простых конечно, типа задания некорректных данных(
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
14.02.2013, 15:01 #6
используйте itoa()

C++
1
2
3
4
void IntToChar (int& num,char* ch)
{
    itoa(num,ch,10);  // itoa(целое число,строка,основание)
};
Добавлено через 19 минут


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main(){
    
    int digit;
    std::cout<<"enter number"<<std::endl;
    std::cin>>digit;
    char str[64];
    for(int n=2;n<=16;n++)
    {
        std::cout<<"base - "<<n<<" "<<itoa(digit,str,n)<<std::endl;
    }
 
    system("pause");
}
0
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
14.02.2013, 16:32 #7
Туц:
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
#include <iostream>
using namespace std;
 
void toRadix( int x, char *str, int radix )
// x - переводимое число, str - результат в СС по основанию radix
{
    int pow = 1;
 
    while ( pow * radix <= x ) pow *= radix;
 
    int i = 0;
 
    for ( int t; pow; ++i, pow /= radix )
    {
        t = x / pow;
        if ( t < 10 ) str[ i ] = t + '0';
        else str[ i ] = t - 10 + 'a';
        x -= pow * t;
    }
    str[ i ] = 0;
}
 
int main()
{
    int x;
    char str[ 1000 ];
    
    cin >> x;
 
    toRadix( x, str, 17 );
    cout << "result: " << str << endl;
 
    return 0;
}
1
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
15.02.2013, 19:08  [ТС] #8
ya_noob, не понимаю как работает ваша функция, ввожу целое число, а она мне сразу какой то результат выводит, причем я еще не ввел систему счисления в которую надо перевести(
0
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
15.02.2013, 21:18 #9
Цитата Сообщение от Ser_Aguero Посмотреть сообщение
не понимаю как работает ваша функция, ввожу целое число, а она мне сразу какой то результат выводит, причем я еще не ввел систему счисления в которую надо перевести(
число переводится в семнадцатеричную систему счисления, о чём недвусмысленно указывает аргумент 17 в вызове функции
C++
1
toRadix( x, str, 17 );
Хотите свою СС, модифицируйте слегка код
1
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
15.02.2013, 22:00  [ТС] #10
с 17ичной понятно, мне в p-чную надо, самому задавать систему, а не какая то конкретная)
0
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
15.02.2013, 22:22 #11
ну так заменить 17 на переменную, которую предварительно выведешь с клавиатуры. все будет работать вплоть до 36-ричной сс
0
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
19.02.2013, 17:43  [ТС] #12
кто нибудь может подсказать где прочитать как написать модульный тест на функию на С++ в VS2012?
в частности на функцию из 7го поста? как использвать констуркцию assert?((
C++
1
2
3
4
5
6
TEST_METHOD(TestMethod1)
        {
        int x = 555;
        int radix = 16;
        assert //???
        }
Добавлено через 19 часов 28 минут
вот(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include "CppUnitTest.h"
#include "C:\Documents\Visual Studio 2012\Projects\dip1\dip1\rad.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
 
namespace UnitTest1
{       
    TEST_CLASS(UnitTest1)
    {
    public:
        
        TEST_METHOD(TestMethod1)
        {
        int x = 555;
        int radix = 16;
        Assert::AreEqual(dip1::toRadix(555, 16), "22b");
        }
 
    };
}
Добавлено через 4 часа 49 минут
в какой теме хоть можно спросить то про unit тестирование??

Добавлено через 20 часов 47 минут
никто опять не понимает вопроса?(
0
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
23.02.2013, 14:54  [ТС] #13
Цитата Сообщение от ya_noob Посмотреть сообщение
Туц:
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;
 
void toRadix( int x, char *str, int radix )
// x - переводимое число, str - результат в СС по основанию radix
{
    int pow = 1;
 
    while ( pow * radix <= x ) pow *= radix;
 
    int i = 0;
 
    for ( int t; pow; ++i, pow /= radix )
    {
        t = x / pow;
        if ( t < 10 ) str[ i ] = t + '0';
        else str[ i ] = t - 10 + 'a';
        x -= pow * t;
    }
    str[ i ] = 0;
}
 
int main()
{
    int x;
    char str[ 1000 ];
    
    cin >> x;
           cin >> radix;
 
    toRadix( x, str, radix );
    cout << "result: " << str << endl;
 
    return 0;
}
можно спросить почему функция три параметра получает? я же ввожу 2 - число и систему счисления для перевода? зачем же str?
0
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
23.02.2013, 16:43 #14
Цитата Сообщение от Ser_Aguero Посмотреть сообщение
можно спросить почему функция три параметра получает? я же ввожу 2 - число и систему счисления для перевода?
За целую неделю вы даже не потрудились разобраться как работает функция. печально.
Цитата Сообщение от Ser_Aguero Посмотреть сообщение
зачем же str?
А куда по-вашему должен результат сохраняться?
0
Ser_Aguero
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 77
23.02.2013, 18:48  [ТС] #15
ya_noob, да я особо и не вникал пока, спасибо за помощь, мне главное модульные тесты, а это функция для примера, по которой надо написать, не знаешь в каком теме можно спросить про это?(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2013, 18:48
Привет! Вот еще темы с ответами:

Составить программу для перевода данного натурального числа в p-ичную систему счисления - C++
Составить программу для перевода данного натурального числа в p-ичную систему счисления (2 &lt; р &lt; 9). Добавлено через 27 минут ...

Функция перевода из десятичной в двоичную систему - C++
Здравствуйте, помогите пожалуйста написать функцию перевод из десятеричной в двоичную систему. Результат нужно записать в переменную...

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

Разработать программу перевода вещественных чисел из десятичной системы счисления в двоичную - C++
Помогите пожалуйста написать программу.Разработать программу перевода вещественных чисел из десятичной системы счисления в двоичную.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.02.2013, 18:48
Ответ Создать тему
Опции темы

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