#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.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];
}