我正在编写一个从文件中读取的程序(称为numbers.txt)将这些数字放入变量(数字和基数),然后通过算法运行它们,将它们转换为任何变量基数的基本情况(必须是2-16,但技术上可以为其他人工作)这样做,程序必须将任何数字10或以上转换为A,B,C等。但是,我遇到了一些我似乎无法解决的小问题。
首先:如何在算法中间取一个数字并将其转换为A,B,C ......?
第二:我没有必要编写一个程序,可以在很长一段时间内(例如1年半)从文件中读取,并且它有点生疏,并且我一直都得到相同的整数。一旦我完成第一组,我怎么能让程序继续下一组整数?
第三:其中一个要求是原始数字介于0-1000000000之间,如果不是,则应输出一些声明无效的声明。在我编写的代码中,我似乎无法按顺序获取逻辑。任何帮助都会很棒:)
#include <stdio.h>
#include <fstream>
#include <iostream>
using namespace std;
int convert(int number, int base)
{
if (number == 0 || base == 10)
{
return number;
}
return (number % base) + 10 * convert(number / base, base);
}
int switchToLetter(int number)
{
switch (number)
{
case 10:
cout << 'A';
break;
case 11:
cout << 'B';
break;
case 12:
cout << 'C';
break;
case 13:
cout << 'D';
break;
case 14:
cout << 'E';
break;
case 15:
cout << 'F';
break;
}
}
int main()
{
int number;
int base;
ifstream numbers("numbers.txt");
numbers.open("numbers.txt");
if (numbers.is_open())
cout << "open";
else
cout << "not open";
int inputvalue = number;
if (inputvalue > 1000000000)
{
cout << "Decimal number too large for this program" << endl;
}
else
{
do
{
convert(number, base);
cout << inputvalue << "in base" << base << "is" << number << endl;
} while (inputvalue >= 0);
}
return 0;
}