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

Objaśnienie szczegółów kodu

Object Storage Arubacloud
0 głosów
193 wizyt
pytanie zadane 16 sierpnia 2017 w C i C++ przez Provokator5 Początkujący (450 p.)

Witam, miałem problem z zadaniem rysowania w pętli for pustego trójkąta i dla inspiracji znalazłem taki oto kod i nie mogę zrozumieć jak on działa bo jeszcze nie spotkałem się z takimi rozwiązaniami :)

#include <iostream>

using namespace std;

int main()
{
int ile;
cin >> ile;

for(int y=ile+1;(y--)>1; cout<<endl)
    for(int x=ile<<1,z=1;--x;++z)
        cout<<" *"[(y==1)||(y==x)||(y==z)];

return 0;
}

Jeśli dobrze rozumiem to ten kawałek kodu poniżej w każdym okrążeniu zmniejsza o 1 y i w dodatku postdekrementacja działa w miejscu gdzie jest sprawdzany warunek pętli?

(y--)>1

Co robi takie wyrażenie (dokładnie mi chodzi o znaki <<) ?

x=ile<<1

Pierwszy raz spotkałem się, żeby nawiasy kwadratowe były użyte gdzieś indziej niż do tablic i jestem w kropce.

Tym bardziej, że są one od razu po znaku cudzysłowia. 

cout<<" *"[(y==1)||(y==x)||(y==z)];

 

1 odpowiedź

+3 głosów
odpowiedź 16 sierpnia 2017 przez adrian17 Ekspert (344,860 p.)
edycja 16 sierpnia 2017 przez adrian17
 
Najlepsza

Jeśli dobrze rozumiem to ten kawałek kodu poniżej w każdym okrążeniu zmniejsza o 1 y i w dodatku postdekrementacja działa w miejscu gdzie jest sprawdzany warunek pętli?

Tak, w każdym okrążeniu. Postdecrement, więc zmniejsza wartość, ale porównuje wartość przed zmniejszeniem do 1.

Co robi takie wyrażenie (dokładnie mi chodzi o znaki <<) ?

https://stackoverflow.com/a/141873

W tym przypadku przekombinowany sposób na napisanie *2.

Pierwszy raz spotkałem się, żeby nawiasy kwadratowe były użyte gdzieś indziej niż do tablic i jestem w kropce.

C-string jest tablicą/wskaźnikiem na tablicę znaków. Można to zapisać odrobinę dłużej tak:

const char *str = " *";
bool value = (y==1)||(y==x)||(y==z);
cout << str[value]; // warunek true/false odpowiada indeksowi 1/0

 

komentarz 16 sierpnia 2017 przez Provokator5 Początkujący (450 p.)
Dzięki wielkie za objaśnienie :)

Teraz już wiem o co w tym kodzie chodzi  :)

Podobne pytania

0 głosów
1 odpowiedź 119 wizyt
pytanie zadane 29 stycznia 2019 w HTML i CSS przez Deeright Początkujący (380 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 29 grudnia 2018 w Java przez ShockOfficial Początkujący (390 p.)
+1 głos
2 odpowiedzi 144 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...