• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd wykonania (SIGSEGV)

0 głosów
357 wizyt
pytanie zadane 26 lutego 2022 w C i C++ przez Rafek Nowicjusz (120 p.)

Cześć,

Zająłem się ostatnio zadaniem z SPOJ "Zabawne dodawanie Piotrusia".  link: https://pl.spoj.com/problems/BFN1/
Pomimo, że wyniki są poprawne wyskakuje błąd wykonania(SIGSEGV). Oto mój kod. Nie wiem czy błąd znajduje się w nim czy też nie.

#include <iostream>

using namespace std;

int t, n, licznik;

int rev(int number)
{
    int result = 0;
    do
    {
        result = result * 10 + number % 10;
    }while (number /= 10);

    return result;
}


int wykonaj(int x)
{
    int pal = rev(x); // pal = palindrom x
    if(x == pal) return x;
    licznik++;
    x += pal;
    wykonaj(x); //rekurencja
}


int main()
{
    cin >> t;
    while(t--)
    {
        cin >> n;
        licznik =0;
        cout << wykonaj(n) << " " << licznik << "\n";  //pokaz wynik
    }
}

 

komentarz 26 lutego 2022 przez Oscar Nałogowiec (29,360 p.)
Nie używasz żadnych wskaźników więc jedyną możliwością wystąppiecia SIGSEGV jest stos a konkretnie rekurencja. Dla jakiej wartości n występuje błąd? Jesteś pewny, że zawsze znajdziesz ten palindrom? I zmieści się on w int.
komentarz 26 lutego 2022 przez Whistleroosh Maniak (57,400 p.)

@Rafek,  uruchomiłem program samemu i w moim przypadku dostaje WA zamiast SIGSEGV

komentarz 26 lutego 2022 przez Whistleroosh Maniak (57,400 p.)

Porównałem też plaindromy, które Twój program wypisuje dla liczb od 1 do 80 z prawidłową listą liczb na OEIS i wszystko jest dobrze. Więc może jest gdzieś błąd w ilosci kroków

komentarz 26 lutego 2022 przez Oscar Nałogowiec (29,360 p.)

@Rafek, Nie zwracasz wyniku z tej rekurencyjnej funkcji.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 662 wizyt
0 głosów
1 odpowiedź 922 wizyt
0 głosów
1 odpowiedź 299 wizyt
pytanie zadane 14 listopada 2016 w C i C++ przez Michał Flisikowski Początkujący (370 p.)

93,731 zapytań

142,668 odpowiedzi

323,286 komentarzy

63,290 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...