Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C++] rozmiar liczby całkowitej

#1
[C++] rozmiar liczby całkowitej
Witam.
Postanowiłem napisać program, ktory oblicza kolejne wiersze trójkąta pascala. Wszystko jest fajnie do czasu obliczania 13 wiersza trójkąta. Wtedy zaczynają dziać się cuda i program świruje. Domyślam się ze problemem prawdopodobnie są złe zmienne. Ma ktoś jakiś pomysł?
Kod:
#include <iostream>

using namespace std;

int silnia(int n);

int main(){
    int n,i;
    unsigned long long int k,h=0;

    cout<<"Podaj liczbe wierszy:";
    cin>>n;
    cin.ignore();
    n++;//bo 1 element to 0
    for(i=1;i<=n;i++&&h++){ //wypisuje wszystkie elementy  piramidy
        for(k=0;k<=h;k++){ //za pomoca dwumianu newtona oblicza współczynniki liczbowe
            cout<<(silnia(h)/(silnia(k)*silnia(h-k)))<<" ";
        }
    cout<<"\n";
    }
return 0;
}

int silnia(int n){
    int sil=1;

    if(n==0||n==1){
        sil=1;
    }else{
        for(;n>=1;n--){
            sil=sil*n;
        }
    }
return sil;
}
I wybik działania:
Kod:
[localhost][~/cpp] $ ./pascal                
Podaj liczbe wierszy:20
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1  
1 4 24 88 221 399 532 532 399 221 88 24 4 1  //13 wiersz.
1 0 1 5 14 29 44 50 44 29 14 5 1 0 1
1 1 -4 -1 2 4 7 9 9 7 4 2 -1 -4 1 1
1 0 -1 -1 -1 4 -1 1 1 1 -1 4 -1 -1 -1 0 1
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
1 3 3 1 -1 10 0 1 -3 0 -3 1 0 10 -1 1 3 3 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 -19 1 1 -2 2174 -1 -2 1 1 11 1 1 -2 -1 2174 -2 1 1 -19 1
[localhost][~/cpp] $
 System operacyjny: linux Przeglądarka: opera
#2
RE: [C++] rozmiar liczby całkowitej
A jakiego algorytmu używasz do stworzenia trójkąta Pascala? Podobne zadanie było w którymś arkuszu maturalnym z informatyki (trzeba skorzystać z symbolu Newtona, ale nie iteracyjnie).

Kod:
for(i=1;i<=n;i++&&h++)
Troszkę dziwna definicja pętli (powinno być for(i=1;i<=n;i++,h++)

EDIT:
To jest ten arkusz (zadanie 2) http://www.oke.poznan.pl/pliki/arkusze/m...a_PR_I.pdf
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: [C++] rozmiar liczby całkowitej
korzystam z dwumianu newtona. Program się sypie przy obliczaniu 13!. chyba musze zastosować inny algorytm.
EDIT: co do pętelki... nie programowałem od wieków.
EDIT 2: Już to rozwiązałem stosując inny algorytm. dziękuję za pomoc
 System operacyjny: linux Przeglądarka: opera
#4
RE: [C++] rozmiar liczby całkowitej
13 silnia jest już dużą liczbą, zatem funkcja powinna zwracać unsigned long albo __int64.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#5
RE: [C++] rozmiar liczby całkowitej
Na systemach 32-bitowych signed int to maksimum 2 147 483 648, a unsigned int to 4 294 967 296.

13! = 6 227 020 800 (jeśli dobrze policzyłem Wesoły ).

Jak widać przekraczasz limit... Użyj long lub long long (w zależności od środowiska/biblioteki C++), to policzysz do 19! (121 645 100 408 832 000) lub trochę więcej Wesoły .
 System operacyjny: windows_xp_2003 Przeglądarka: opera
Programy: Polecane / Nowe / Inne




Podobne wątki ([C++] rozmiar liczby całkowitej)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Program liczący liczby pierwsze Mersenne'a raistin 2 11110 12.03.2018, 12:51
Ostatni post: Szachista
  [VBA Excel] Zaokrąglanie liczby w górę Pioro 2 12585 13.02.2018, 21:25
Ostatni post: Pioro
  Konwertowanie słów na liczby Java Blendow 5 9646 19.08.2017, 21:17
Ostatni post: Szachista

Skocz do:


Wybrane wątki ([C++] rozmiar liczby całkowitej)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 13314 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 2976 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 7495 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 6519 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 6794 22.10.2019 17:48
Ostatni post: Szachista
  Książki do nauki C# olek23 14 20333 17.10.2019 13:06
Ostatni post: Ajgor
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 8026 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 4531 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 21557 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 7042 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 7765 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 9686 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 9144 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 9130 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 11176 28.04.2019 19:31
Ostatni post: koneton