Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.53.216] |
|
Сообщ.
#1
,
|
|
|
Начиная с центра, обойти все элементы квадратной матрицы размером 13x13 по спирали (распечатывая их в порядке обхода).
|
Сообщ.
#2
,
|
|
|
Программку для авто сервиса уже написал вялся за задачки!
|
Сообщ.
#3
,
|
|
|
У меня была похожая задачка, точнее, олимпиадная. Напечатать числа от 1 до 100 по спирали. Там тоже надо было создать массив 10х10 и пройти по нему. Тут 13х13, но действия примерно такие же. И здесь надо просто печатать текущее значение, а не записывать туда число. Я напишу, как я обходил матрицу 10х10 по спирали от центра, а ты уже потом это переделаешь (это совсем легко).
int M[10][10]; // матрица void main() { clrscr(); int i,j,x,y,n; M[4][4]=1; for(x=4,y=4,n=1,i=1;i<=100;) // цикл до 10*10 - кол-ва элементов матрицы { for(j=0;j<n;j++) M[++x][y]=++i; // тут заносится значение, а его надо печатать for(j=0;j<n;j++) M[x][++y]=++i; // то же самое n++; for(j=0;j<n;j++) M[--x][y]=++i; // и здесь for(j=0;j<n;j++) M[x][--y]=++i; // надо печатать, а не записывать сюда n++; } for(x=9;x>=0;x--) // тут мы печатаем значения, но это тебе не надо { for(y=0;y<10;y++) printf("%3d ",M[x][y]); printf("\n"); } getch(); } int M[10][10]; void main() { clrscr(); int x=4,y=5,num=1,man=-1,j,i,wp=1; for(i=1;i<=100;) { if(!(++man % 2) && (man!=0)) num++; for(j=0;j<num;j++,i++) { (wp==1)?y--:(wp==2)?x++:(wp==3)?y++:x--; M[x][y] = i; } wp++; if(wp>4) wp=1; } for(i=0;i<10;i++) { for(j=0;j<10;j++) printf("%3d ",M[j][i]+1); printf("\n"); } getch(); } |