nawinac spiral na macierz

alba marina
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 1 lip 2005, o 22:28
Płeć: Kobieta
Lokalizacja: Francja
Pomógł: 1 raz

nawinac spiral na macierz

Post autor: alba marina »

mam taki problem, i trzea do niego dorobic algorytm:

Dane dwa liczby M i N "nawinac spiral na macierz MxN" (Wyswietlic). Na przyklad dla M=4 i N=7 powinno wyswietlic:

\(\displaystyle{ \begin{array}{ccccccc}
1 & 2 & 3 & 4 & 5 & 6 & 7 \\
18&19&20&21&22&23& 8 \\
17& 28&27&26&25&24& 9 \\
16&15&14&13&12&11& 10 \end{array}}\)
arigo
Użytkownik
Użytkownik
Posty: 852
Rejestracja: 23 paź 2004, o 10:17
Płeć: Mężczyzna
Lokalizacja: Lublin
Pomógł: 28 razy

nawinac spiral na macierz

Post autor: arigo »

szkic rozwiazania

robisz jakas pseudostrukture ktora mowi o kierunku wypelniania tzn prawo dol lewo gora.

Kod: Zaznacz cały

{
ustawiamy pole poczatkowe (lewa gora);
ustawiany poczatkowy kierunek wypelania na prawo.
jesli nie wypelniono wszystkiego {
    jesli nastepne pole nie lezy za tablica lub nie jest juz wypelnione
         { wypelnij to pole
            zwieksz odpowiedno indeks tablicy }
    w przeciwnym wypadku
         zmieniamy kierunek wypelniania na nastepny
   }
wyswietl tablice
}
alba marina
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 1 lip 2005, o 22:28
Płeć: Kobieta
Lokalizacja: Francja
Pomógł: 1 raz

nawinac spiral na macierz

Post autor: alba marina »

Twoj pomysl jest w porzadku, to jest odzwierciedlenie jak by sie ta tabelke pisalo odrecznie. Mnie sie zrobila heca bo w zadaniu jest zaznaczone ze nie mozna uzywac zadnej tablicy (nie mozna uzywac struktury 'array', ani w ogole zadnej innej, tylko proste dane). Znaczy sie rzecz polega na pisaniu tych numerkow linia za linia, zawsze od prawa do lewa a potem skok, wiec te kierunki nie bardzo pomagaja.

Na przyklad gdyby to byl problem zapisac
\(\displaystyle{ \begin{array}{ccccccc}
1 & 1 & 1 & \cdots & 1 & 1 & 1\\
1 & 2 & 2 & \cdots & 2 & 2 & 1\\
1 & 2 & \ddots & \vdots & & 2 & 1\\
& & & 9 & & &\\
1 & 2 & & \vdots & \ddots & 2 & 1\\
1 & 2 & 2 & \cdots & 2 & 2 & 1\\
1 & 1 & 1 & \cdots & 1 & 1 & 1
\end{array}}\)


rozwiazanie by bylo

|dla n j to
| | | zapisac(j)
| | |jesli nie
| | | zapisac(i)
| | |koniec_jesli
| |
| |koniec_dla
|
| zapisac skok_do_nastepnej_linii
|
|koniec_dla

w tym przypadku jest prosciej bo jest symetria. Ale w przypadku tej spirali lamie sobie glowe juz kilka dnii nie wychodzi :oops: , a jutro mam sprawdzian z tego tematu, wie jesli macie jeszcze jakis pomysl, bylabym bardzo wdzieczna
ODPOWIEDZ