1

我正在编写一个将十进制数转换为二进制、八进制和十六进制的程序。我在不同的类中进行每次转换,但我想使用存储在第一类中的数组(bin [31])中的数字的二进制形式。有没有办法在我的其他课程中使用该数组?我的老师说我应该使用参考,但我不知道该怎么做。我的文件是:

二进制.h

#ifndef BINARY_H
#define BINARY_H




class Binary{

public:

    int num_;                               
    static int bin[31];
    int i;
    int x;


    Binary();

        void Set(int temp);                
        int Get();
        void ChangeToBinary();              
        void ChangeToBinaryComplement();    
        void TwoComplement();               
        void PrintBinary();                 

    ~Binary();                              



};
# endif

二进制文件

#include <stdio.h>
#include <iostream>
#include "Binary.h"
#include "Octal.h"

using namespace std;

Binary::Binary(){

}

    void Binary::Set(int temp){                     
        num_ = temp;
}

    int Binary::Get(){                              
        return num_;
}

    void Binary::ChangeToBinary(){                  

        x = 1;                                      
        for (i=0;i<30;i++){                         
            x*=2;                                   
}

        for (i = 0; i<31;i++){
            if (num_ -x >= 0){                      
                bin[i] = 1;                     
                num_ = num_ -x;                 
}
        else{
            kettes[i] = 0;                          

}           x=x/2;                                      
}
}

    void Binary::ChangeToBinaryComplement(){        

        for (i=0;i<31;i++){                         
            if (bin[i] ==0){
                bin[i] = 1;
}
            else {
                bin[i] = 0;
}
}
}

    void Binary::TwoComplement(){                   
        for(i=30;i>0;i--){                          
            if(bin[i] == 0){                        
                bin[i] = 1;                     
                break;                              
}               else{                                   
                bin[i] = 0;                     
}                                                       
}
}

    void Binary::PrintBinary(){                     
        for (i=0;i<31;i++){                         
            cout << bin[i];
}
        cout << " " << endl;

}

Binary::~Binary()
{

}

八进制.h

#ifndef OCTAL_H
#define OCTAL_H


class Octal{

private:
    int* oct_ = new int[10];
            int i;
public:

    Octal();
        void ConvertToOctal();
        void PrintOctal();

    ~Octal();
};

#endif

八进制.cpp

#include <stdio.h>
#include <iostream>
#include "Binary.h"
#include "Octal.h"

using namespace std;

Octal::Octal()
{

}
    void Octal::ConvertToOctal(){
        int k = 0;
        int z = 0;
        int o = 0;
        for(i=0;i<31;i++){
            if((help[i] ==1) && (k==0)){
                z = z + 4;
                k = k + 1;

}
            else if((help[i] ==1) && (k==1)){
                z = z + 2;
                k = k + 1;

}
            else if((help[i] ==1) && (k==2)){
                z = z + 1;
                k = k + 1;

}
            else{
                k = k + 1;

}
            if(k==3){
                oct_[o]=z;
                z=0;
                k=0;
                o = o + 1;
}
}

}
    void Octal::PrintOctal(){
        for(i=0;i<10;i++){
            cout << oct_[i];

}
}
Octal::~Octal()
{

}
4

1 回答 1

0

如果您必须使用自己的课程

您可以在类中添加一个方法Binary,让您可以访问指向包含数据的数组的指针。该方法可能如下所示:

int getData(){
  return bin;
}

您还可以使用 直接访问该数组Binary::bin,这还将为您提供指向数组第一个元素的指针。

如果将数组类型从 更改intbool或会更好char。如果你想做得更好 - 使用vector< bool >模板类。它基本上是一个布尔数组。您可以在C++ 参考中了解它

如果你只需要功能

你真的应该只使用标准manipulators。没有真正的理由重新发明轮子。最简单的方法是将数字输入到流中,然后将其输出到字符串中。像这样:

#include<string>     // string
#include<sstream>    // stringstream
#include<iostream>   // cin, cout
#include<iomanip>    // setbase

using namespace std;

int main(){
  int number;
  cin >> number;

  stringstream parser;
  parser << setbase(16) << number;

  string convertedNumber;
  parser >> convertedNumber;

  cout << endl << convertedNumber << endl;

  return 0;
}

当然,您可以更改setbase机械手内部的底座。

于 2013-11-08T03:19:09.853 回答