2015-04-10 1 views
-1

Nous convertissons la base 10 en un nombre dans une base différente (B). J'ai des problèmes avec la fonction d'inversion de vide, cela n'inversera pas l'ordre des nombres.Fonction inverse de vide C++

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

Quelle est votre contribution? Quelle est votre sortie? Quelle est votre sortie attendue? Comment la fonction convertToBaseB (...) est-elle pertinente pour la question que vous posez? –

+0

l'entrée est un nombre sous la forme de base 10 et il est censé convertir en un nouveau nombre avec une base différente ... la fonction de renversement de vide est censée permuter l'ordre de la sortie de la conversion à la définition de base b ... –

+0

Cela ne nous dit toujours pas quelle est votre contribution à inverser ... quelle est la valeur de x et la taille que vous passez? –

Répondre

0

Works pour moi:

#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

Cela devrait être un commentaire. Si vous voulez montrer un exemple de code qui fonctionne, ajoutez un lien vers ideone.com. – Barmar

+0

Utilisation inutile de 'new' –

+0

Évitez généralement les réponses au code uniquement. Pensez à ajouter une 'description' qui aide à expliquer votre code. _ "Works for me" ne convient pas tristement. Merci – MickyD

1

Votre fonction inverse fonctionne très bien. Cependant, il ne semble pas comme C++ pour moi ... En C++ j'aurais un vecteur et faire:

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

Si vous voulez coller avec votre boucle, au moins l'utilisation std :: échange comme celui-ci

void reverse(int x[],int size) { 
    for(int k=0; k<size/2; k++) 
     std::swap(x[k], x[size-k-1]); 
} 
+0

Pourquoi abuser de 'std :: swap_ranges' de cette façon quand il y a [' std :: reverse''] (http://fr.cppreference.com/w/cpp/algorithm/reverse)? – Blastfurnace