Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Trójkąt pascala - program nie wypisuje poprawnie wartości

Ostatnio zmodyfikowano 2014-01-25 13:27
Autor Wiadomość
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 :
C/C++
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    long int r, max, k; // rzad , kolumna
    cout << " Podaj z ilu poziomow ma sie skladac trojkat" << endl;
    cin >> r;
    r = r - 1;
    k = r; // nadanie  wartosci
    max = r;
    long int t[ r + 1 ][ k + 1 ]; // utworzenie tablicy wielowymiarowej skladajacej sie z rzedow i kolumny
   
    for( r = 0; r <= max; r++ ) // for sluzacy do wyzerowania   wartosci rzedu ( komorek tablicy)
    {
       
        for( k = 0; k <= max; k++ ) // do wyzerowania wartosci kolumny ( komorek tablicy)
        {
            t[ r ][ k ] = 0;
        }
    }
    t[ 0 ][ 0 ] = 1;
    t[ 1 ][ 0 ] = 1; // 1  RZAD 0 KOLUMNA 0  ||   nadanie stalych w tablicach , poniewaz trojkat zawsze wyglada tak samo
    t[ 1 ][ 1 ] = 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 ] << " "; // wypisywanie wyniku na ekranie uzytkownika
        }
        cout << endl; // przeskakiwanie pomiedzy rzadami
    }
} // koniec
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
C/C++
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.
P-103106
pekfos
» 2014-01-24 21:33:57
C/C++
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.
P-103114
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!
P-103122
docentpp
» 2014-01-25 00:11:03
Rozmiar tablicy musi być znany w momencie kompilacji.
Spróbuj np. zadeklarować tablicę z nadmiarem,
C/C++
long int t[ 50 ][ 50 ]

i uruchom program,aby sprawdzić algorytm
tworzenia trójkąta Pascala dla wczytanych wartości r,k // r<50 , k< 50.
P-103124
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:)!
P-103125
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ł :)?
P-103152
« 1 »
  Strona 1 z 1