0

基数 10 を別の基数 (B) の数値に変換しています。数字の順序が逆にならない void reverse 関数に問題があります。

 string convertToBaseB(int num, int b){
int digit;
stringstream answer;
string x="";
    while(num>0){
    digit=num%b;
    num/=b;
    answer<<digit;
}
    return answer.str();}

void reverse(int x[],int size){//reversing the 

for(int k=0; k<size/2; k++){
    int temp=x[k];
    x[k]=x[size-k-1];
    x[size-k-1]=temp;}
}
4

2 に答える 2

1

あなたのリバース機能はうまくいきます。ただし、私にはC++のようには見えません... C++では、ベクトルがあり、次のようにします。

std::vector<int> arr;
//... fill arr
std::swap_ranges(&arr[0], &arr[arr.size()/2], arr.rbegin());

for ループに固執したい場合は、少なくともこのように std::swap を使用してください

void reverse(int x[],int size) { 
    for(int k=0; k<size/2; k++)
        std::swap(x[k], x[size-k-1]);
}
于 2015-04-10T01:42:36.440 に答える
0

私のために働く:

#include <iostream>

using namespace std;

void reverse(int x[],int size)
{

  for(int k=0; k<size/2; k++)
  {
    int temp=x[k];
    x[k]=x[size-k-1];
    x[size-k-1]=temp;
  }
}

int main()
{
  const int sz = 9;
  int* digits;

  digits = new int[sz];

  for (int i=0; i < sz; ++i)
  {
    digits[i] = i;
  }

  reverse(digits, sz);

  for (int i=0; i < sz; ++i)
  {
    cout<<digits[i]<<" ";
  }
  cout<<endl;
}
于 2015-04-10T01:19:51.230 に答える