Witam.
Mam program, który rysuje spirale i muszę zrozumieć na jakiej zasadzie on działa, wszystko rozumiem, znam ten język, tylko od zawsze mam problem z pętlami.
Czy ktoś pomógłby mi zrozumieć to? Rozumiem z tego tyle: za pierwszym obrotem program ustala "pozy", pozniej "pozx" gdyż modulo tak twierdzi (chyba że modulo z 0 to nie 0?) i pozniej znowu ustawia sie Y a pozniej X. Wiem, że i,j,k maja takie wartosci, żeby spirala się ładnie kręciła, ale próbuje zrozumieć dlaczego akurat to są te wartości. Mógłby ktoś mi z tym pomóc? Będę wdzięczmy.
#include <stdio.h>
#include <stdlib.h>
int main()
{
#define Y 22
#define X 40
char ekran[Y][X];
int i,j,k;
int kierunek=1; //1 - w prawo, -1 - w lewo
int ilosc=1,iloscmax=5;
int pozx=10, pozy=10; // pozycja startowa
// zerowanie funkcji
for (j=0; j<Y; j++)
for(i=0; i<X; i++)
ekran[j][i]=' ';
ekran[pozy][pozx]='X';
for(k=0;k<5;k++)
{
for(j=0;j<4;j++)
{
for (i=0;i<1+j+4*k;i++)
{
if(j%2==0)
{
pozy=pozy-(1-j)*kierunek;
ekran[pozy][pozx]='X';
}
else
{
pozx=pozx+(2-j)*kierunek;
ekran[pozy][pozx]='X';
}
ilosc++;
if (ilosc==iloscmax)
break;
}
if (ilosc==iloscmax)
break;
}
if (ilosc==iloscmax)
break;
}
//Wyświetlanie funkcji
for (j=0; j<Y; j++){
for(i=0; i<X; i++)
printf("%c",ekran[j][i]);
printf("\n");}
return 0;
}