编写程序将base 10转换为base 2-16

时间:2015-02-06 05:04:11

标签: c++ file-io recursion

我正在编写一个从文件中读取的程序(称为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;   
}

0 个答案:

没有答案