そこで、バイナリ値を入力として受け取り、それをグレイコードに変換したり、その逆を行ったりするプログラムを書きたいと思います。
これが私が最初に書いたものです:
#include <iostream>
using namespace std;
int main()
{
int Choice;
bool g0,g1,g2,g3,b0,b1,b2,b3;
cout<<"For Binary To Gray Code Enter 1." << endl <<"For Gray Code to Binary Enter 2." << endl;;
cin>>Choice;
if(Choice==1)
{
cout<<"Enter the Binary Bits." << endl;
cin>>b0>>b1>>b2>>b3;
cout<<"Orginal Binary Form: "<<b3 <<b2 <<b1 <<b0 << endl;
g3=b3;
g2=b3^b2;
g1=b2^b1;
g0=b1^b0;
cout<<"Converted Gray Code Form: "<<g3 <<g2 <<g1 <<g0 << endl;
}
else if(Choice==2)
{
cout<<"Enter The Gray Code Bits." << endl;
cin>>g0>>>g1>>g2>>g3;
cout<<"Original Gray Code Form: "<<g3 <<g2 <<g1 <<g0 << endl;
b3=g3;
b2=b3^g2;
b1=b2^g1;
b0=b1^g0;
cout<<"Converted Binary Form: "<<b3 <<b2 <<b1 <<b0 << endl;
}
return 0;
}
これは4ビットで機能しますが、
実行時にユーザーが入力したバイナリ/グレー コードのサイズを決定するものが必要です。
私は少し調査を行い、そのような場合にベクトルを使用することを知りましたが、大学で C++ を始めたばかりなので、ベクトルや配列にさえ慣れていません。それを達成するために使用できるものは他にありますか?そうでない場合、ベクトルをどのように使用できるか教えてもらえますか?
次に、入力をスペースなしで 1 行にまとめたいと思います。
例:
1011
1 0 1 1
別々の行で各ビットの入力を取得するのではなく。今、私はノーを知ることができなくなることにも気づきました。XOR 演算を実行するために使用したビット式も変更されます。バイナリとグレイコードの
bool
変数を宣言し、単純なステートメントを使用して個々のビットではなく、これらの変数に対して XOR 演算を実行することは可能ですか?複雑なことは何もありませんか?