Trójkąt pascala - program nie wypisuje poprawnie wartości
Ostatnio zmodyfikowano 2014-01-25 13:27
zamir4 Temat założony przez niniejszego użytkownika |
Trójkąt pascala - program nie wypisuje poprawnie wartości » 2014-01-24 20:07:37 Witam. Jestem początkujacym w C++ , mam do napisania trójkąt pascala w C++ , wzorowałem się trochę na jednym z programów, jednakże mimo wszystko program nie działa. W zależnosci od parametru, wywala różne wartosci, raz jest to 1 czasem losowy ciąg liczb. Mój kod : #include <iostream> #include <conio.h>
using namespace std;
int main() { long int r, max, k; cout << " Podaj z ilu poziomow ma sie skladac trojkat" << endl; cin >> r; r = r - 1; k = r; max = r; long int t[ r + 1 ][ k + 1 ]; for( r = 0; r <= max; r++ ) { for( k = 0; k <= max; k++ ) { t[ r ][ k ] = 0; } } t[ 0 ][ 0 ] = 1; t[ 1 ][ 0 ] = 1; t[ 1 ][ 1 ] = 1; for( int r = 2; r <= max; r++ ) { for( int k = 0; k <= r; k++ ) { if( r == k ) t[ k ][ r ] = 1; if( k == 0 ) t[ k ][ r ] = 1; t[ r ][ k ] = t[ r - 1 ][ k - 1 ] + t[ r - 1 ][ k ]; } } for( r = 0; r <= max; r++ ) { for( k = 0; k <= r; k++ ) { cout << t[ r ][ k ] << " "; } cout << endl; } }
Nie mam pojęcia, gdzie może być błąd. Przy okazji mam jedno pytanie - ponieważ jak już mówiłem, wzorowałem się na jednym z programów, nie rozumiem dwóch rzeczy : Dlaczego na samym początku odejmuje od r a nastepnie dodaje do tablicy wielowymiarowej +1 , a druga rzecz dlaczego for( int r = 2; r <= max; r++ ) { for( int k = 0; k <= r; k++ ) { zaczynam od k=0 , rozumiem dlaczego r=2 , ale nie rozumiem dlaczego zaczynam od k=0. Z góry bardoz dziekuje za pomoc. Dodam, że zanim napisałem na forum przeczytalem ponownie kurs o tablicach, dalej nie rozumiem. |
|
pekfos |
» 2014-01-24 21:33:57 long int t[ r + 1 ][ k + 1 ];
|
To jest nieprawidłowe. ale nie rozumiem dlaczego zaczynam od k=0. |
Bo tablice indeksuje się od zera. |
|
zamir4 Temat założony przez niniejszego użytkownika |
» 2014-01-24 23:45:31 Po zmianie na t[r][k]; też nie działa :) chyba ze inaczej mialem to zmienic
Dzięki za próbę pomocy! |
|
docentpp |
» 2014-01-25 00:11:03 Rozmiar tablicy musi być znany w momencie kompilacji. Spróbuj np. zadeklarować tablicę z nadmiarem, i uruchom program,aby sprawdzić algorytm tworzenia trójkąta Pascala dla wczytanych wartości r,k // r<50 , k< 50. |
|
zamir4 Temat założony przez niniejszego użytkownika |
» 2014-01-25 00:29:41 Też nie działa :/. Analizowałem to kolejną godzinę. Chyba nie nadaje się do tego ;d.
Dzięki za pomoc tak czy siak:)! |
|
zamir4 Temat założony przez niniejszego użytkownika |
» 2014-01-25 13:27:21 W dalszym ciągu nie wpadłem na nic nowego, czy ktoś ma jeszcze jakiś pomysł :)? |
|
« 1 » |