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

C++, liczenie silni, błąd od 13! i dalej

Fiszki IT
Fiszki IT
0 głosów
86 wizyt
pytanie zadane 16 czerwca w C i C++ przez niezalogowany

Cześć, robiąc zadanie na SPOJu o silniach postanowiłem najpierw napisać program, który w ogóle te silnie będzie liczył. Napisałem takie coś:

#include <iostream>

using namespace std;

unsigned long long silnia(unsigned int n)
{
    switch(n)
    {
        case 0: return 1; break;
        default:
            for(int i=n-1; i>=1; i--)
            {
                n*=i;
            }
    }
    return n;
}

int main()
{
    unsigned int x;
    cin >> x;
    cout << silnia(x);
    return 0;
}

Mimo, że funkcja silnia zwraca unsigned long long, czyli chyba do 20! powinno być ok, to 12! jest ostatnim dobrze wykonanym działaniem. Co jest tu nie tak?

1 odpowiedź

0 głosów
odpowiedź 16 czerwca przez tkz Nałogowiec (39,540 p.)
Zwróć uwagę, jaki typ argumentu przekazujesz i na jakim działasz.
komentarz 16 czerwca przez niezalogowany
No tak, faktycznie, co z tego że funkcja silnia zwraca unsigned long long, skoro zmienna n jest zaledwie unsigned intem. Dzięki, prosty błąd, a nie zauważyłem jakoś :)

Podobne pytania

0 głosów
3 odpowiedzi 150 wizyt
0 głosów
2 odpowiedzi 107 wizyt
pytanie zadane 20 stycznia 2020 w SPOJ przez enpikku Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 169 wizyt
pytanie zadane 24 kwietnia w C i C++ przez Malarz Nowicjusz (160 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

84,756 zapytań

133,559 odpowiedzi

295,985 komentarzy

56,012 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...