Odwracanie cyfr

Odpowiedz Nowy wątek
2019-03-15 12:23
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;
}
edytowany 3x, ostatnio: TenAnonim, 2019-03-15 12:28

Pozostało 580 znaków

2019-03-15 12:37
0

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


edytowany 1x, ostatnio: lion137, 2019-03-15 12:37
Hmm jakieś większe wskazówki? Bo po zmianie z int licz na vector<int> licz mam 20 errorów:/ - TenAnonim 2019-03-15 13:24

Pozostało 580 znaków

2019-03-15 13:06
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ś.

edytowany 2x, ostatnio: grzesiek51114, 2019-03-15 13:07

Pozostało 580 znaków

2019-03-15 13:32
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/que[...]/convert-vectorint-to-integer
[2] https://stackoverflow.com/que[...]/convert-vectorint-to-integer


edytowany 1x, ostatnio: lion137, 2019-03-15 13:33
Ma odwrócić wszystkie liczby po kolei z tego wektora. Czyli muszę zrobić teraz pętlę zmianiającą liczby z wektora na inty? Hmmm ok chyba łatwiej będzie zrobić tablice - TenAnonim 2019-03-15 13:38
To źle Napisałęś temat, ma odwrócić wszystkie liczby z wektora , a nie cyfry. W takim razie, po prostu, pętla z funkcją odwroc. - lion137 2019-03-15 13:41

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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