Wpis z mikrobloga

@laczka: zmienna do for moze miec dowolna literke (moze miec tez wiele liter). j%2 - sprawdza parzystosc. Drugi for zaczyna sie zawsze, bo on nie ma warunku z 1 fora. Klamry musza byc, znaczy sie nie koniecznie bo przy if'ach mozna to inaczej rozpisac. Edit: for też może być bez klamr pozniej ale to jest generalnie nie stosowane.
@laczka drugi "for" się wykonuje gdy pierwszy się zakończy, czyli wczyta się n liczb. "For" nie jest fałszywy, zmienna może być. Drugie "for" czyta zapisane liczby w tablicy od końca, bo taka jest treść zadania stąd też taka inicjalizacja j; pomija co drugą - po to ten "if" w pętli. Klamry mają znaczenie, zwłaszcza w drugiej pętli, ich brak zmieni wynik. Na koniec ciekawostka, tab[n] to nie jest standard "ansi c" a
@laczka:

a)

Czy drugie for zaczyna się wykonywać kiedy pierwszy for będzie fałszywe

Nie, drugi for będzie wykonywał się zawsze

b) > Czemu inicjacja zmiennej to j=n-1?
Najpierw pobierasz ile liczb ma być w tablicy. tablica jest indeksowana nie od liczby 1, tylko od 0, więc należy do przedziału <0;n-1>. Jeśli chciałabyś operować na indeksie który wykracza poza zakres wywali nam syf po prostu.

c)
if (j%2 == 1) - sprawdza
@laczka: bo jak masz liczbe nieparzysta to % (modulo) da 0 przy nie parzystej da 1. Modulo to reszta z dzielenia, jak podzielisz 10 : 7 to masz wynik 1 i resztę 3. Przy dzieleniu 10 : 2 masz wynik 5 reszte 0. Przy dzieleniu 11 : 2 masz wynik 5 reszte 1.
@Kooneer: Właśnie miałem ci napisać ( ͡° ͜ʖ ͡°) Chociaż mi tłukł ojciec żeby sprawdzać do 0, ale to pewnie jakieś zboczenie.
Co do for to może być też tak:

for(i = 1; i <= 10; i++ )
jedna_powtarzana_instrukcja;

@laczka:
Z tym, że tutaj można wstawić tylko 1 instrukcję, wiec chcąc zrobić tak jak u ciebie musiałabyś wrzucić to co się dzieje w forze do funkcji
@Kooneer: Nowoczesny kompilator potraktuje to jednakowo.
@laczka: A co do tego mojego pisania o modulo (reszcie z dzielenia) to poczytaj sobie o operacjach binarnych (bitwise). Żeby było jasne % nie jest operacją binarne ale one też są ważne i warto wiedzieć jak działają.
@Cilthal:
1)
Właśnie chyba zboczenie. Po prostu łatwiej się sprawdza czy reszta z dzielenia jest równa zeru (jedna cyfra), czy jakiejś innej, gdzie jest 9 innych (1 - 9), natomiast w tym wypadku będzie zawsze zwracać wynik zero - jeden.

2) właśnie nie jestem pewien czy przy pierwszym okrążeniu pętli nie zastosuje preinkrementacji na początku, co może poskutkować tym, że zaczniemy wpisywać zmienne od indeksu 1.
@laczka: Spójrz:
Twoja tablica jest indeksowana w zakresie <0; n-1>. Więc masz 0,1,2,3,4... n.
Czyli jeśli chciałabyś sprawdzić resztę z dzielenia to twój wynik zawsze będzie równy 0 (indeks parzysty + zero) lub (1 indeks nieparzysty). Dlaczego? Łatwo to pokazać na pierwszych indeksach:
2 - reszta 0
3 - reszta 1
4 - reszta 0
5 - reszta 1
6- reszta 0
7 - reszta 1
I tak dalej, i tak
@laczka: Spójrz:
Twoja tablica jest indeksowana w zakresie <0; n-1>. Więc masz 0,1,2,3,4... n.
Czyli jeśli chciałabyś sprawdzić resztę z dzielenia to twój wynik zawsze będzie równy 0 (indeks parzysty + zero) lub (1 indeks nieparzysty). Dlaczego? Łatwo to pokazać na pierwszych indeksach:
2 - reszta 0
3 - reszta 1
4 - reszta 0
5 - reszta 1
6- reszta 0
7 - reszta 1
I tak dalej, i tak
@Oo-oO oops korekta, tu w drugiej pętli akurat nie zmieni się wynik jak nie będzie klamer, ale ich brak, lub wcięcia takie jak masz prowadzą do takich właśnie błędów których czasem nie widać, lub trudno zauważyć.
@laczkalaczka skoro wiesz co robi modulo, to widzisz że jeśli j maleje od n-1 o jeden w każdym obiegu pętli to by wybrać i wypisać co drugą liczbę trzeba to ograniczyć co właśnie robi ten if
@laczka: Samo modulo nie pomija to służy do obliczenia reszty z dzielenia.

for (int j=n-1; j>=0; j--) - initializacja petli, warunek poczatkowy to j=n(wartosc wyzej obliczona) - 1; petla dziala do momentu przekroczenia/zrownania j z 0; j maleje co "obieg"
{
if (j%2 == 1) - jezeli reszta z dzielenia j przez 2 bedzie rowna 1 wykona sie ponizsza funkcja
{
printf("%d",tab[j]); - wyswietla
}
}
@laczka: Paniczu, nie jestem jeszcze Panem ( ͡° ͜ʖ ͡°)
A co do tego kodu to jeszcze to:
printf("%d",tab[j]);
Zmieniłbym na to:

printf("%d\n",tab[j]);
\n - przechodzi do nowej linii.
Na koniec dodam, masz tam w zadaniu podane wejście, więc zrób sobie kilka wersji tego kodu i porównaj wyniki. Nie wiem z czego się uczysz, ale warto sięgnąć po aktualne książki a co do C++ to nie używaj