c ++ 11 — пустая обратная функция C ++

Мы конвертируем базу 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;}
}

-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]);
}
1

Другие решения

Работает для меня:

#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;
}
0

По вопросам рекламы [email protected]