Witam,
czy mógłbym prosić o jakieś wskazówki, jak narysować spiralę Ulama w C?
Albo ogólniej - jak narysować spiralę kwadratową w C?
W załączniku screen jak ma to wyglądać.
Witam,
czy mógłbym prosić o jakieś wskazówki, jak narysować spiralę Ulama w C?
Albo ogólniej - jak narysować spiralę kwadratową w C?
W załączniku screen jak ma to wyglądać.
a mógłbym poprosić o jakąś ciut większą wskazówkę? tak bardziej dla kogoś początkującego :)
dopiero zacząłem zarówno studia jak i pisanie w C++ ;)
Ciut więcej to już gotowiec.
_13th_Dragon napisał(a):
Ustalasz 4 zmienne ograniczające: Lf, Up, Rt, Dn
- Ustalasz kierunek L:
- Kolejne kroki robisz w pętle dopóki Up<=Dn oraz Lf<=Rt
- Dla kierunku L idziesz od Rt do Lf wzdłuż Dn, po czym zmniejszasz Dn i zmieniasz kierunek na U
- Dla kierunku U idziesz od Dn do Up wzdłuż Lf, po czym zwiększasz Lf i zmieniasz kierunek na R
pozostałe dwa kierunki - sam dasz rady dopisać
@_13th_Dragon Nie jestem autorem tematu, ale chciałem zrobić tą spiralę ulama, tylko pytanie mam takie, jak zrobić aby liczby wpisywał od środka, i potem stopniowo szedł w prawo, górę, lewo itd. Używam Qt.
OSTATNNIA_LICZBA=Y*X;
Po czym idź od zewnątrz zmniejszając.
Czyli co mam zacząć od wypisania liczby w górnym lewym rogu ?? Tak jak na obrazku "37" ??
Zaczynasz nie od rogu tylko od kierunku.
jeżeli n będzie parzyste, to zaczynamy rysowanie od lewego górnego rogu.
void parzyste(int **tablica, int n)
{
int X1=0, X2=n;
int Y1=1, Y2=n;
int wartosc = n*n;
int kierunek = 0;
int i=0,j=0;
while(wartosc!=0)
{
switch(kierunek%4)
{
case 0: //idziemy w prawo
tablica[i][j]=wartosc;
wartosc--;
j++;
if(j==X2)
{
X2--;
j=X2;
kierunek++;
i++;
}
break;
case 1: //w dol
tablica[i][j]=wartosc;
wartosc--;
i++;
if(i==Y2)
{
Y2--;
i=Y2;
kierunek++;
j--;
}
break;
case 2: //teraz w lewo
tablica[i][j]=wartosc;
wartosc--;
j--;
if(j<X1)
{
j=X1;
X1++;
kierunek++;
i--;
}
break;
case 3: //w gore
tablica[i][j]=wartosc;
wartosc--;
i--;
if(i<Y1)
{
i=Y1;
Y1++;
kierunek++;
j++;
}
break;
}
}
}
W przypadku, gdy n będzie nieparzyste musimy zacząć od dolnego prawego rogu - jak ująć ten przypadek w tym kodzie?
Zastanów się trochę, całość da się zapisać w max 10 wierszy.