Odwracanie kolejności znaków

0

Jestem początkujący i piszę program do zamiany liczb z systemu dziesiętnego na inne systemy. Mam problem, gdyż po zamianie program wyświetla mi ciąg znaków, ale od końca. Jak mogę to zrobić, żeby odwrócić kolejność znaków?
Kod programu:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int a, b, x, w, l;
    
    cout<<"Na jaki system chcesz zamienic liczbe (min. 2 max. 9) [podaj cyfre]: ";
    cin>>a;
    cout<<endl<<"Podaj liczbe (w systemie dziesietnym): ";
    cin>>b;
    cout<<endl<<endl;
    
     
     x = b%a;
     cout<<x;
     w = b/a;
     do
     {
      x = w%a;
      cout<<x;
      w = w/a;
     }while(w>a);
     if (w>=a)
     {
     x = w/a;
     cout<<x<<endl<<endl;
     }
     if (w<a, w!=0)
     {
     cout<<w<<endl<<endl;
     }
     else
     {
     cout<<endl<<endl;
     }
     
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Zapisać do tablicy i wypisać od końca lub wykorzystać naturę stosu i napisać funkcję rekurencyjną.

0

Dzięki, ale napisałem, że jestem początkujący i nie mam pojęcia co mówisz (piszesz), możesz mi przybliżyć?

0

Nie wiem, jak dodać liczby do tablicy, nie wiedząc, ile tych liczb będzie

0
Maniek napisał(a)

Nie wiem, jak dodać liczby do tablicy, nie wiedząc, ile tych liczb będzie

#include<vector>
vector<int>Tablica;

http://www.cplusplus.com/reference/stl/vector/

0

A jest możliwe wpisanie znaku przed znak już wpisany?
tzn.
Jak np. mamy 'progrm' i przed 'm' chcemy wstawić 'a' - da się tak?

0
Maniek napisał(a)

A jest możliwe wpisanie znaku przed znak już wpisany?
tzn.
Jak np. mamy 'progrm' i przed 'm' chcemy wstawić 'a' - da się tak?

W tablicy czy jak?

0

wiem, jak w tablicy, ale pytam, czy jest inna metoda

PS
Wymajstrowałem coś takiego, ale nie wiem czemu ale wyświetla mi całkiem co innego:

 #include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int a, b, x, w, l, i;
    int tablica[i];
    
    cout<<"Na jaki system chcesz zamienic liczbe (min. 2 max. 9) [podaj cyfre]: ";
    cin>>a;
    cout<<endl<<"Podaj liczbe (w systemie dziesietnym): ";
    cin>>b;
    cout<<endl<<endl;
    
     
     x = b%a;
     cout<<x;
     tablica[i=1] = x;
     w = b/a;
     do
     {
      x = w%a;
      cout<<x;
      tablica[i=i+1] = x;
      w = w/a;
     }while(w>a);
     if (w>=a)
     {
     x = w/a;
     cout<<x<<endl<<endl;
     tablica[i=i+1] = x;
     }
     if (w<a, w!=0)
     {
     cout<<w<<endl<<endl;
     tablica[i=i+1] = w;
     }
     else
     {
     cout<<endl<<endl;
     }
     cout<<tablica[i];
     if (i>0)
     {
         cout<<tablica[i--];
        
     }

     cout<<endl<<endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
0

@maniek - niespecjalnie. Jeśli chcesz to zrobić to musisz... a zresztą:

=masz ciąg ac i chcesz do niego wstawić b,
1) kopiujesz c do osobnego bufora w pamięci
2) zmieniasz rozmiar pierwszego bufora
3) kopiujesz b za a
4) kopiujesz c za b
5) zwalniasz bufor dodatkowy

Co jest wolne i zwyczajnie nieefektywne. Szybciej byłoby w implementacji listowej, ale i tak jeśli się da to unikaj czegoś takiego.

0
int tablica[i]; 

Tak nie można. Musisz podać konkretnie rozmiar tablicy. Najpierw wpisz sobie wszystkie liczby do tablicy a potem je wypisz w odwrotnej kolejności

0

Wiem, z tym, że ja nie znam liczb, które trzeba wpisać do tablicy.

0

Nie znasz liczb, czy ich ilości?

0

wykorzystaj klasę vector i nie ma problemów albo czytaj do stringa i potem konwertuj na liczbę itd. albo zrób funkcję rekurencyjną i z niej wypisuj kolejne wyniki działania, w tedy będziesz miał w dobrej kolejności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1