从 2 到 7 的数字的二进制代码
Binary code for numbers from 2 to 7
你好,我为我的最终学校项目制作了简单的程序,将正常的十年nuber编码为二进制,反之亦然。问题在于二进制部分,当您为从 2 到 7 的数字输入二进制代码时,您会看到 c++ 无法识别它们这是我的代码(它是克罗地亚语,但文本并不重要):
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
int main () {
int n;
cout<<"-------------------------KODER/DEKODER-------------------------"<<endl;
ofstream Info;
Info.open("Info.txt");
Info<<"KODER_DEKODER verzija 1.0.0nOvaj program je napisan kako bi se brzo dekadni broj pretvorio u binarni i obrnuto bez previse razmisljanja"<<endl;
Info.close();
cout<<"NAPOMENA: Uneseni brojevi i binarne kombinacije moraju biti izmedu brojeva 0 i 15"<<endl;
cout<<"Unesite 1 ako zelite kodirati dekadni broj u binarni, a ako zelite dekodirtai binarni broj u dekadni unesite broj 2"<<endl;
cin>>n;
int d,b;
if (n==1){
cout<<"Unesite dekadni broj koji zelite kodirati u binarni"<<endl;
cin>>d;
if (d==0){
cout<<"Vas kodirani dekadni broj glasi 0000"<<endl;
}else if (d==1){
cout<<"Vas kodirani dekadni broj glasi 0001"<<endl;
}else if (d==2){
cout<<"Vas kodirani dekadni broj glasi 0010"<<endl;
}else if (d==3){
cout<<"Vas kodirani dekadni broj glasi 0011"<<endl;
}else if (d==4){
cout<<"Vas kodirani dekadni broj glasi 0100"<<endl;
}else if(d==5){
cout<<"Vas kodirani dekadni broj glasi 0101"<<endl;
}else if (d==6){
cout<<"Vas kodirani dekadni broj glasi 0110"<<endl;
}else if (d==7){
cout<<"Vas kodirani dekadni broj glasi 0111"<<endl;
}else if (d==8){
cout<<"Vas kodirani dekadni broj glasi 1000"<<endl;
}else if (d==9){
cout<<"Vas kodirani dekadni broj glasi 1001"<<endl;
}else if(d==10){
cout<<"Vas kodirani dekadni broj glasi 1010"<<endl;
}else if (d==11){
cout<<"Vas kodirani dekadni broj glasi 1011"<<endl;
}else if(d==12){
cout<<"Vas kodirani dekadni broj glasi 1100"<<endl;
}else if(d==13){
cout<<"Vas kodirani dekadni broj glasi 1101"<<endl;
}else if(d==14){
cout<<"Vas kodirani dekadni broj glasi 1110"<<endl;
}else if(d==15){
cout<<"Vas kodirani dekadni broj glasi 1111"<<endl;
}
else {
cout<<"Unesi broj izmedu 0 i 15"<<endl;
return main();
}
}
else if (n==2) {
cout<<"Unesite binarni broj koji zelite pretvoriti u dekadni"<<endl;
cin>>b;
if (b==0000) {
cout<<"Vasa binarna kombinacija daje broj 0"<<endl;
} else if (b==0001) {
cout<<"Vasa binarna kombinacija daje broj 1"<<endl;
} else if (b==0010) {
cout<<"Vasa binarna kombinacija daje broj 2"<<endl;
} else if (b==0011) {
cout<<"Vasa binarna kombinacija daje broj 3"<<endl;
} else if (b==0100) {
cout<<"Vasa binarna kombinacija daje broj 4"<<endl;
} else if (b==0101) {
cout<<"Vasa binarna kombinacija daje broj 5"<<endl;
} else if (b==0110) {
cout<<"Vasa binarna kombinacija daje broj 6"<<endl;
} else if (b==0111) {
cout<<"Vasa binarna kombinacija daje broj 7"<<endl;
} else if (b==1000) {
cout<<"Vasa binarna kombinacija daje broj 8"<<endl;
} else if (b==1001) {
cout<<"Vasa binarna kombinacija daje broj 9"<<endl;
} else if (b==1010) {
cout<<"Vasa binarna kombinacija daje broj 10"<<endl;
} else if (b==1011) {
cout<<"Vasa binarna kombinacija daje broj 11"<<endl;
} else if (b==1100) {
cout<<"Vasa binarna kombinacija daje broj 12"<<endl;
} else if (b==1101) {
cout<<"Vasa binarna kombinacija daje broj 13"<<endl;
} else if (b==1110) {
cout<<"Vasa binarna kombinacija daje broj 14"<<endl;
} else if (b==1111) {
cout<<"Vasa binarna kombinacija daje broj 15"<<endl;
}
else{
cout<<" Unesi pravilnu binarnu kombinaciju"<<endl;
return main();}
}
else {
cout<<"UNESITE 1 ZA KODIRANJE ILI 2 ZA DEKODIRANJE"<<endl;
return main();}
system("pause");
return 0;}
这不起作用的原因是因为前导 0。 0000
到0111
是八进制(以 8 为基数)值。 0010
是 8,0100
是 64,依此类推,这显然与您正在读取的 10 个基数值不匹配。
要让它工作,请删除前导 0(使它们以 10 为基数)或按照 Gaurav Sehgal 的建议进行操作并改为在字符串中读取。
cin>>b;
if (b==0000) {
cout<<"Vasa binarna kombinacija daje broj 0"<<endl;
} else if (b==0001) {
....
您正在尝试在此处输入二进制数字,并且已将b
声明为 int
。您可能希望将b
声明为 string
,然后将b
与不同的值(如 0000
等)进行比较。
相关文章:
- 如何修复我的最大公约数代码?它适用于除零和零以外的所有数字
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 无法理解代码背后的逻辑,这是在两个给定数字之间生成素数的优化问题
- 有人可以解释我这个代码吗?它给出与我们输入的数字相反
- 我怎么不能按课程代码的降序对数字进行排序
- 为什么当我在 c++ 中运行函数时,我的代码显示数字 53
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 为什么这个代码不适用于大数字
- 我如何在一个 if 语句中声明所有数字我尝试通过其他方式声明所有数字,如果一个接一个,但似乎代码有逻辑错误
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- Cpp代码故障(显示意外数字)
- 如何让我的代码显示文件名不正确或文件中数字的平均值?
- 试图找到一个数字的平方根,但代码不起作用。C++
- 上一个较大的数字代码中的输出不正确
- 相同的数字代码返回不同的输出,无论是 C++ 还是 C
- visual c++中,没有编译器优化的数字代码会给出错误的结果
- C++字母等效数字代码的睡眠时间
- C++字母等效数字代码输出程序
- 如何获取键盘按键值(或数字/代码)