Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > C массив, заполнение от центра по спирали.


Автор: Sabretooz 2.2.2006, 16:22
Привет всем. Нужно написать прогу на С, в среде visual.
Так вот никак в голову не приходит как именно нужно прописать этот чертов алгоритм
ну вот вообщем заполнение обычное деревенское
Код

#include <iostream.h>
void main()
{
const int SIZE=10;
int A[SIZE][SIZE],chislo=0;
for(int i=0;i<SIZE;i++)
{
for(int j=0;j<SIZE;j++)
{
A[i][j]=chislo;
chislo++;
}
}

for(int i=0;i<SIZE;i++)
{
for(int j=0;j<SIZE;j++)
{
cout<<'\n'<<A[i][j]<<' ';
}
}
}


а теперь нужно изменить пару строк, чтобы заполнение было по спирали. Центральный элемент один и от него идет закручивание. Помогите кто может. Заранее благодарен.

Автор: MAKCim 2.2.2006, 18:24
Код

void input(int** matrix, int n, int x, int y)
{
    int i=1,j=0,k=0,q=1,t=0,p,g=0,tx=-1,ty=-1;
    for (p=0; p<n; p++)
    {
        int h=p==n-1 ? 1: 2;
        while (k<h)
        {
            while (t<=q) 
            {
                if (x!=tx || y!=ty) matrix[y][x]=g++;
                else tx=ty=-1;
                if (t<q) y+=j, x+=i;
                t++;
            }
            t=0;
            tx=x, ty=y;
            if (i==1 || i==-1) 
            {
                j=i;
                i=0;
            }
            else if (j==1)  i=-1, j=0;
            else i=1, j=0;
            k++;
        }
        q++;
        k=0;
    }    
}

n - размерность(нкчетн) квадратной матрицы, x,y - центральная клетка
как то сложно получилось для простой задачи smile

Автор: Sabretooz 4.2.2006, 09:44
Спасибо, сейчас буду пошагово разбирать :-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)