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

Moze mi ktos wytlumaczyc kod??

Object Storage Arubacloud
+1 głos
324 wizyt
pytanie zadane 16 czerwca 2015 w C i C++ przez isza Początkujący (450 p.)
Tablica  która generuje liczby po przekotnych od 1 do 9, reszta 1

 

 #include <iostream>

using namespace std;

int main()

{
const int n=9,m=n;
double a[n][m];
int i,j;

for(i=0;i<=n-1;i++)
for(j=0;j<=m-1;j++)
{
if(i==j||i+j==n-1) //generowanie przekatnych
a[i][j]=i+1;
else
a[i][j]=1; //generowanie jedynek
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

for(i=0;i<=n-1;i++) //wypiswwanie tablicy
{
for(j=0;j<=m-1;j++)
cout<<a[i][j]<<"\t";
cout<<endl;
}
}

Moze mi ktos wytlumaczyc szczegolowo te dwie linijki ?

if(i==j||i+j==n-1) //generowanie przekatnych
a[i][j]=i+1;

Wiem, ze numerowanie tablicy zaczyna sie od 0 ale reszty niezbyt rozumiem

Ma ktos inne podobne przyklady ? Ps. na kolokwium

5 odpowiedzi

0 głosów
odpowiedź 16 czerwca 2015 przez pewolt Mądrala (5,790 p.)
jesli if wowna sie i==J albo (i+j)==(n-1) to do tablicy 'a' w miejscu [i][j] zapisuje sie i+1

rozumiesz?
0 głosów
odpowiedź 16 czerwca 2015 przez Radfler VIP (101,030 p.)

Dodaj formatowanie i zrób wcięcia ;)

Co do tych dwóch linijek:

if((i == j) || (i+j == n-1))
    a[i][j] = i+1;

W momencie, gdy numer liczby w tablicy będzie taki sam jak numer aktualnie przeglądanej tablicy (tablica dwuwymiarowa to inaczej tablica tablicy) lub gdy suma tych dwóch wartości jest równa liczbie komórek w pojedynczej tablicy to do aktualnego elementu tablicy wpisz numer aktualnego elementu+1.

Ten pierwszy warunek (i == j) sprawia, że zostanie narysowana przekątna od lewego górnego rogu do prawego dolnego, a drugi warunek umożliwi narysowanie drugiej przekątnej.

Jak czegoś jeszcze nie wiesz to pisz! Może chcesz więcej szczegółów? :)

0 głosów
odpowiedź 16 czerwca 2015 przez katolik6 Dyskutant (8,140 p.)
dziwny ten kod, dwa takie same const inty, bez sensu, nie rozumiem tego, żeczywiście, pierwszy if wykona się tylko dla przekątnych kwadratu 9x9, choć tylko takiego, bo n jest const. ,,piksele'' przekątnych otrzymają wartość x pixela po prawej, znowu bez sensu, po co, tym bardziej, że dwa są maksymalnie z prawej, więc taki ,,pixel'' nie będzie istniał... nic nie rozumiem, jedynki będą we wszystkich ,,pixelach'' nie będących częścią przekątnych. :( Jeśli czegoś nie rozumiesz polecam przeanalizować to krok po kroku, iteracja po iteracji, tak jak procesor, mi pomaga
0 głosów
odpowiedź 16 czerwca 2015 przez kotfuterkowy Dyskutant (9,220 p.)
edycja 16 czerwca 2015 przez kotfuterkowy
if(i==j || i+j==n-1) 

wyrażenie jest spełnione spełnione gdy zachodzi przynajmniej jeden z dwóch warunków:

i==j // jest spełniony dla elementów na przekątnej od góry po lewej do dołu po prawej
i+j==n-1 // jest spełniony dla elementów na przekątnej od góry po prawej do dołu po lewej

Zresztą wystarczy zobaczyć na wynik programu by wiedzieć jak działa:

W skrócie dla przekątnych (tam gdzie zachodzi warunek z ifa) masz nr wiersza w tablicy powiększony o 1, dla pól poza przekątnymi jest 1

0 głosów
odpowiedź 16 czerwca 2015 przez Ithrasil Obywatel (1,820 p.)
Ok to idzie tak, niech zacznę od pierwszego warunku:

1. if(i==j)  - znaczy mniej więcej tyle, że gdy numer kolumny równa się numerowi wiersza, wtedy warunek zostanie spełniony np. (zamiast wartości podałem indeksy tablicy)

Ten if odpowiada za przekątną która tworzy takie coś:

x

       x

             x

[0, 0]  [0, 1]  [0, 2]  - w tym wierszu liczbą która spełnia warunek jest 0, 0

[1, 0 ] [1, 1]  [ 1, 2] - w tym wierszu liczbą która spełnia warunek jest 1, 1

[2, 0]  [2, 1]  [2, 2]  - w tym wierszu liczbą która spełnia warunek jest 2, 2

 

2. if(i+j==n-1) - na pierwszy rzut oka można się trochę przerazić, ale to tylko początkowe wrażenie.

Ten if odpowiada za przekątną która tworzy takie coś:

               x

       x

x

dla wytłumaczenia podstawie dane pod instrukcję warunkową:

[0, 0]  [0, 1]  [0, 2]  - if(0+2==3-1)      // liczba o indeksie kolumny 2 spełnia warunek, ponieważ i=0, j=2, n=3

[1, 0 ] [1, 1]  [ 1, 2] - if(1+1==3-1)      // liczba o indeksie kolumny 1 spełnia warunek, ponieważ i=1, j=1, n=3

[2, 0]  [2, 1]  [2, 2]  - if(2+0==3-1)        // liczba o indeksie kolumny 0 spełnia warunek, ponieważ i=2, j=0, n=3

 

tak w skrócie :)
komentarz 16 czerwca 2015 przez Ithrasil Obywatel (1,820 p.)

3. a[i][j]=i+1; - Tutaj mamy częśc kodu odpowiadająca za określenie wartości danej komórki tablicy.

użyjmy naszej sprawdzonej 9 komórkowej tablicy:

[0, 0]  [0, 1]  [0, 2] 


[1, 0 ] [1, 1]  [ 1, 2] 


[2, 0]  [2, 1]  [2, 2]  

podstawiając pod wzór:  a[i][j]=i+1   wykonujemy poniższe obliczenia:

pierwszą komórką jest: [0, 0], a jej wartość wynosi 1:  wytłumaczenie: a[0][0] = 0+1

drugą komórką jest: [0, 2], a jej wartość wynosi 1: a[0][2] = 0+1;​

trzecią komórką jest: [1, 1], a jej wartość wynosi 2: a[1][1] = 1+1;​

czwartą komórką jest: [2, 0], a jej wartość wynosi 3: a[2][0] = 2+1;​

czwartą komórką jest: [2, 2], a jej wartość wynosi 3: a[2][2] = 2+1;​

Podobne pytania

0 głosów
1 odpowiedź 863 wizyt
pytanie zadane 3 sierpnia 2017 w C# przez Alex.Ironside Stary wyjadacz (14,900 p.)
0 głosów
1 odpowiedź 179 wizyt
pytanie zadane 21 kwietnia 2016 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
0 odpowiedzi 185 wizyt

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...