19 апреля 2015 г.

Дан двумерный массив. Расположить числа от 0 до n по улитке

setlocale(LC_ALL, "Russian");
const int len=15;//строки массива
const int col=9;//столбцы массива
int A[len][col];//сам массив
int summ=len*col;//произведение ширины на высоту, нужно для устранения ошибки
int xlen=0;//корректиривщик строк массива
int xcol=0;//корректировщик столбцов массива
int tmp_len=len;
int tmp_col=col;
int digit=1;//начальное число

while(tmp_len>0)
{
for(int i=0;i<4;i++)
{
for(int j=0;j<((tmp_len<tmp_col)?tmp_col:tmp_len);j++)
{
if(i==0&&j<tmp_col-xcol&&digit<=summ)
A[i+xlen][j+xcol]=digit++;
if(i==1&&j<tmp_len-xlen&&j!=0&&digit<=summ)
A[j+xlen][tmp_col-1]=digit++;
if(i==2&&j<tmp_col-xcol&&j!=0&&digit<=summ)
A[tmp_len-1][tmp_col-(j+1)]=digit++;
if(i==3&&j<tmp_len-(xlen+1)&&j!=0&&digit<=summ)
A[tmp_len-(j+1)][xlen]=digit++;
}
}
tmp_len--;
tmp_col--;
xlen++;
xcol++;
}
for(int i=0;i<len;i++)
{
for(int j=0;j<col;j++)
{
cout<<A[i][j]<<"\t";
}
cout<<"\n\n";
}
cout<<"\n\n";

Комментариев нет:

Отправить комментарий