Odwracanie cyfr

0

Witam mam problem z kodem który skleiłem ponieważ cały czas pojawiają się te same błędy pomiędzy wektorami a intami czy ktoś wie jak to rozwiązać? Jestem mało doświadczony więc prosiłbym o nienabijanie się z tego przeraźliwego kodu bo sam nie wiem jak on zadziała:/

Kod ma wczytać ilość cyfr zależną od p i je odwrócić na koniec wypisując.

|22|error: no match for call to '(std::vector<int>) (int&)'|
|35|error: cannot convert 'std::vector<int>' to 'int' for argument '1' to 'int odwroc(int)'|

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int p;
vector<int> licz(1+p);
vector<int> liczod(1+p);

int odwroc(int licz)
{
    for(int z=0; z<p; z++)
    {
    int LiczbaCyfr = floor(log10(licz)+1);
    int k = 0;
    for(int i=0; i<LiczbaCyfr; i++)
    {
        k+=pow(10.0, LiczbaCyfr -1 -i)*(licz%10);
        licz=licz/10;
    }
    return liczod(z);
    }
}


int main()
{
    cin>>p;
    for(int i=0; i<p; i++)
    {
        cin>>licz[i];
    }
    for(int i=0; i<p; i++)
    {
        cout<<odwroc(liczod)<<endl;
    }
    return 0;
}

Górna funkcję znalazłem w internecie skopiowałem i przekształciłem jednak z tego co widzę niewłaściwie. Kod tego co znalazłem.

int reverse (int n)
{
    int LiczbaCyfr = floor( log10(n)+1);
    int k = 0;
    for( int i=0; i<LiczbaCyfr; i++)
    {
             k+=pow(10, LiczbaCyfr - 1 - i )*(n%10);
             n=n/10;
    }
    return k;
}
0

Wysyłasz do funkcji vector, a funkcja przyjmuje int. Albo Zmień funkcję albo z wektora Zrób liczbę.

0

Odwrócić można prościej, np. w ten sposób:

#include <iostream>

using namespace std;

int main()
{
    int number = 123456;
    do 
    {
        cout << number % 10;
    }
    while ((number /= 10) != 0);
    return 0;
}

https://ideone.com/jIxKTB

EDIT: Dobra, nieważne... doczytałem treść zadania ale niech już zostanie. Może się przyda jakoś.

0

Czy ta funkcja ma odwrócić wektor cyfr, czy liczbę? Bo jak to pierwsze to wystarczy użyć std::reverse[1], na wczytanym wektorze.
Natomiast, jak liczbę. Widzisz, że Twoja funkcja przyjmuje int - a i pracuje na integerze, więc nie Możesz po prostu podmienić jej wejścia na wektor! Musisz skonwertować ten wektor intów do liczby, np.: [2] i wtedy odwrócić.
[1] https://stackoverflow.com/questions/43076535/convert-vectorint-to-integer
[2] https://stackoverflow.com/questions/43076535/convert-vectorint-to-integer

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