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

Czy gdzieś tu jest błąd czy program sam sobie wpisuje do tablicy zmienne ?

VPS Starter Arubacloud
0 głosów
246 wizyt
pytanie zadane 27 listopada 2016 w C i C++ przez morele123 Gaduła (4,790 p.)
i to wiersze j to kolumny, n to ilość wierszy k to ilość kolumn. Dwa pierwsze for'y wstawiają 1 do tablicy na odpowiednie miejsca.
	for(int i=1; i<=n+1;i++)
	{
		T[i,1]=1;
	}
	for(int i=2;i<=n+1;i++)
	{
		T[i,i]=1;
	}
	for(int i=3;i<=n;i++)
	{
		for(int j=2;j<=i-1;j++)
		{
			T[i,j]=T[i-1,j-1] + T[i-1,j];
		}
	}

Tablica jest numerowana od 1. Mają w niej być liczby z trójkąta pascala. Problem w tym, iż mimo że wstawiam jedynki dla 1. kolumny oraz do kolumn równym wierszom to gdy program ma sumować miejsce [3,2] To zamiast brać poprzedni wiersz i tą samą kolumnę(czyli [2,1]) to bierze mi liczbę 2 nie wiadomo skąd.

komentarz 27 listopada 2016 przez niezalogowany
to na pewno c++? a nie c#?
komentarz 27 listopada 2016 przez morele123 Gaduła (4,790 p.)
Czemu uważasz, że to c# ?
komentarz 27 listopada 2016 przez niezalogowany
Bo: T[i,1]=1; jest zapisem tablic wielowymiarowych w C#, a nie w C++
komentarz 27 listopada 2016 przez morele123 Gaduła (4,790 p.)
Tak słyszałem, że tak się nie deklaruje tablic, jednak to C++. A i tak powinno działać.
komentarz 27 listopada 2016 przez niezalogowany
edycja 27 listopada 2016

A od którego standardu ten zapis jest legalny? O ile mi wiadomo to nie jest?

Legalny jest, ale nie ma sensu (thx adrian za rozwianie moich wątpliwości)

2 odpowiedzi

0 głosów
odpowiedź 27 listopada 2016 przez unknown Nałogowiec (39,560 p.)
0 głosów
odpowiedź 27 listopada 2016 przez playerony Pasjonat (15,220 p.)

Mi się to osobiście nie kompilowało w ogóle, tutaj poprawiona wersja i z tego co widze wszystko działa poprawnie:

#include <iostream>

using namespace std;

int main()
{
    const int n = 15;
    int T[n][n];

    for(int i=0 ; i<n ; i++)
        for(int j=0 ; j<n ; j++)
            T[i][j] = 0;

    for(int i=1 ; i<n ; i++)
        T[i][1]=1;

    for(int i=2 ; i<n ; i++)
        T[i][i]=1;

    for(int i=3 ; i<n ; i++)
        for(int j=2;j<=i-1;j++)
            T[i][j]=T[i-1][j-1] + T[i-1][j];

    for(int i=0 ; i<n ; i++){
        for(int j=0 ; j<n ; j++)
            cout << T[i][j] << " ";
        cout << endl;
    }

    return 0;
}

 

komentarz 27 listopada 2016 przez morele123 Gaduła (4,790 p.)
Dla wartości 4,3 powinno być 3, a jest 4. Kiedy daje cout przy sumowaniu, żeby mi wypisał wartości jakie sumuje to wartość T[i-1][j] wynosi 2, przy liczeniu wartości [3,2], a wartość [i-1][j-1] wynosi 1, czyli tak jak powinno być, więc sumuje mi 1 + 2 i wychodzi mu 2 jakimś cudem. Jednak wartość w indeksie [4,3] już nie jest prawidłowa.
komentarz 27 listopada 2016 przez playerony Pasjonat (15,220 p.)

U mnie wszystko wygląda okej i nie wiem jak moge pomóc.

komentarz 27 listopada 2016 przez morele123 Gaduła (4,790 p.)
Niesamowite tobie pokazuje inne wyniki niż mi.

Podobne pytania

0 głosów
1 odpowiedź 322 wizyt
0 głosów
1 odpowiedź 156 wizyt
pytanie zadane 4 maja 2016 w C i C++ przez MikoLoczko Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 331 wizyt
pytanie zadane 19 października 2016 w JavaScript przez Drago Verde Obywatel (1,250 p.)

92,840 zapytań

141,781 odpowiedzi

320,856 komentarzy

62,172 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...