Cześć. Mam pytanie do Was. Mógłby ktoś wytłumaczyć, dlaczego w "if" musi być i=0;? Ogólnie to ma wyświetlić tabliczkę mnożenia. Screen w załączniku.
Bo ktos kto Ci ten kod dostarczyl ma bardzo osobliwe podejscie do zagniezdzonych petli :)
To powinno byc cos w rodzaju
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
Zakładam, że kod z górnej połowy zrzutu ekranu nie różni się od tego z dolnej połowy (nie wiem, czemu zamieściłeś dwa).
Pewne wprowadzenie:
- Każda pętla
for
ma zmienną sterującą – zazwyczaj jedną, czasem więcej. Sam nie używam nazwy "zmienna sterująca" za często, ale tutaj się nadaje akurat. :) - Zazwyczaj, jak wspomniał @stivens , wyświetlanie dwuwymiarowej tablicy (a taką jest tabliczka mnożenia) zapisuje się, używając dwóch pętli – jednej w drugiej. Zmienna sterująca zewnętrznej pętli reprezentuje numer wiersza tej tablicy, a zmienna sterująca wewnętrznej pętli reprezentuje numer kolumny tej tablicy. Jak kończy się pętla wewnętrzna, to oznacza koniec wiersza. Dzięki temu algorytm wie, że ma znów zacząć numerować kolumny od
1
, i rozpoczynając nową pętlę sam ustawia zmienną sterującą na wartość1
.
Odpowiadając na pytanie: u Ciebie zmienne sterujące są też dwie, ale pętla jest jedna. To trochę zmienia postać rzeczy. Algorytm nadal potrzebuje mieć zmienną sterującą ustawioną na 1
na początku każdego wiersza, ale tutaj sam tego nie zrobi. U Ciebie numer kolumny reprezentuje zmienna i
; musi być więc taki moment podczas obiegu pętli, że zmiennej i
jest przypisywana wartość 1
. Takim momentem jest, kiedy zmienna i
ma wartość 10
– wiersz się skończył. Jako że u Ciebie wartość tej zmiennej już jest zwiększana o 1
po każdej iteracji (nie wiem, czemu, w sumie), to żeby na początku kolejnej iteracji żeby nie miała wartości 2
, to musi być ustawiana na wartość 0
.
Jak coś niejasne, pytaj.
A dlaczego tak sobie utrudniać życie?
https://ideone.com/ahobir
Wielkie dzięki za odpowiedzi! Już rozumiem. Bardzo mi pomogliście.