Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用动态内存分配将十进制转换为八进制?_C++_Decimal_Octal - Fatal编程技术网

C++ 如何使用动态内存分配将十进制转换为八进制?

C++ 如何使用动态内存分配将十进制转换为八进制?,c++,decimal,octal,C++,Decimal,Octal,我写了两段代码。 这一个不起作用,因为它向后写代码 void convertNum1(long a) { while (a!=0) { long remainder = 0; remainder = a % 8; a /= 8; cout << remainder; } cout << endl; } void convertNum2(long a) { long *poi

我写了两段代码。 这一个不起作用,因为它向后写代码

void convertNum1(long a) {
    while (a!=0) {
        long remainder = 0;
        remainder = a % 8;
        a /= 8;

        cout << remainder;
    }
    cout << endl;
}
void convertNum2(long a) {
    long *pointer = NULL;
    int k = 1;
    long c = a;
    while (c != 0) {
        c/= 8;
        k++;
    }
    pointer = new long[k];

    int rem;
    for (int j = 0;j<k;j++) {
        rem = a / 8;
        *(pointer + j) = rem;
    }
    for (int j = k; j > 0;j--) {
        cout << *(pointer + j);
    }

    delete []pointer;
}
void convertNum1(长a){
while(a!=0){
长余数=0;
余数=a%8;
a/=8;

cout我建议使用
堆栈
。将八进制数字推到堆栈上,然后将其弹出(它们的顺序正确)

顺便说一句,你总是可以欺骗和使用

std::字符串Dec_到Oct(无符号长数字)
{
静态常量字符八进制字符数字[]=“01234567”;
标准:堆栈八进制数;
同时(数量>0U)
{
八进制数字=数字%8;
常量字符d=八进制字符数字[八进制数字];
八进制数推(d);
数字=数字/8;
}
std::字符串八进制文本;
而(!octal_number.empty())
{
const char d=八进制数.top();
八进制文本+=d;
八进制数.pop();
}
返回八进制文本;
}

我建议使用
堆栈
。将八进制数字推到堆栈上,然后将其弹出(顺序正确)

顺便说一句,你总是可以欺骗和使用

std::字符串Dec_到Oct(无符号长数字)
{
静态常量字符八进制字符数字[]=“01234567”;
标准:堆栈八进制数;
同时(数量>0U)
{
八进制数字=数字%8;
常量字符d=八进制字符数字[八进制数字];
八进制数推(d);
数字=数字/8;
}
std::字符串八进制文本;
而(!octal_number.empty())
{
const char d=八进制数.top();
八进制文本+=d;
八进制数.pop();
}
返回八进制文本;
}

请直接查看并发布您的代码,而不是链接到托管代码的地方。您也可以将文本放入C样式的注释块中,这是不必要的。由于您是新手,请查看。顺便说一句,八进制、十进制和十六进制仅以文本格式或常量出现。因此,除非您将八进制存储为文本,否则没有p点存储为整数。另外,使用
%
符号表示余数。
/
符号表示除法。在第二个代码中,您永远不会更改
a
。因此,数组的每个元素都将获得相同的
a/8
值。请直接查看并发布代码,而不是链接到托管代码的某个地方。您还可以将文本放在C样式的注释块中,这是不必要的。因为您是新手,请查看.BTW、八进制、十进制和十六进制仅以文本格式或常量出现。因此,除非您将八进制存储为文本,否则将其存储为整数没有意义。此外,对于余数,请使用
%
符号bol表示除法。在第二个代码中,您永远不会更改
a
。因此,数组的每个元素都将获得相同的
a/8
std::string Dec_To_Oct(unsigned long number)
{
  static const char octal_char_digits[] = "01234567";
  std::stack<char>  octal_number;
  while (number > 0U)
  {
    octal_digit = number % 8;
    const char d = octal_char_digits[octal_digit];
    octal_number.push(d);
    number = number / 8;
  }
  std::string octal_text;
  while (!octal_number.empty())
  {
     const char d = octal_number.top();
     octal_text += d;
     octal_number.pop();
  }
  return octal_text;
}