「已注销」 2019-09-27 00:03 采纳率: 25%
浏览 192
已采纳

想把一个十进制改成别的进制的数,但就是运行不成功,问题在哪里???跪求!各位爸爸!


#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
void print(int num, int base);
long powed(int base,int n);
main()
{
    int x = 20;
    int y = 8;
    print(x,y);
}


void print(int num, int base)
{
    int fine = 0;
    int counter = 0;
    cout << "Now decimal system is " << num << endl;
    vector<int>arr;
    int fin = 0;
    while(num!=0)
    {
        fine = num%base;
        num = num/base;
        arr[counter] = fine;
        counter++;
    }
    for(size_t i=counter-1;i>=0;i--)
        fin += powed(base,i)*arr[i];
    cout << fin;
}
long powed(int base,int n)
{
    long sum = 1;
    for(size_t i=0;i<n;i++)
        sum = sum * base;
    return sum;
}


  • 写回答

1条回答 默认 最新

  • 豆丷 2019-09-27 09:57
    关注

    1.vector使用不当,vectorarr;,这一句没有指定arr的大小,所以默认是0,后面用[]访问的时候就越界了,
    由于预先不能确定转换后的位数,所以改成pushback(),
    while循环执行完后arr数组里就是转换后的数,但是是逆序的,需要从后往前cout,
    2.powed函数不知道要干什么,是个死循环,也会导致越界

    
    void print(int num, int base);
    int main()
    {
        int x = 20;
        int y = 8;
        print(x, y);
        return 0;
    }
    
    
    void print(int num, int base)
    {
        int fine = 0;
        int counter = 0;
        cout << "Now decimal system is " << num << endl;
        vector<int>arr;
        int fin = 0;
        while (num != 0)
        {
            fine = num%base;
            num = num / base;
            arr.push_back(fine);
        }
        for (int i = arr.size() - 1; i >= 0; --i)
            cout << arr[i];
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么