Распечатывание матрицы в строку
Добавлено: 04 дек 2009, 11:35
Надо распечатать квадратную матрицу в строку, чтоб элементы шли в таком порядке
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
Никак не соображу как сделать эту змеевидную сортировку...
пока вот что имею
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
Никак не соображу как сделать эту змеевидную сортировку...
пока вот что имею
Код: Выделить всё
#include <stdio.h>
#include <conio.h>
void main() {
int i, j, n, M[9][9], b[100], k=0, l=0;
clrscr();
do {
printf("Enter size of matrix: ");
scanf("%d", &n);
} while(1 > n || n > 9);
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
M[i][j] = (i + 1) * 10 + j + 1;
printf("\n");
for(i = 0; i < n; i++)
{for(j = 0; j < n; j++)
printf("%4d ",M[i][j]);
printf("\n");
}
printf("\nLine printed after detour ==>\n\n==>");
j=0;i=0;l=1;
for (k=0;k<n*n;k++)
{
b[k]=M[i][j];
if(l) {i++;j++;} else {i--;j--;}
if (j>i&&i<0){i++;l=1;}
if (j>i&&j>=n){j--;l=0;}
if (i>j&&i>=n){i--;j-=2;l=0;}
if (i>j&&j<0){j++;i+=2;l=1;}
if (i==j&&i>=n){j-=2;i--;l=0;}
if (i==j&&i<0){j++;i+=2;l=1;}
}
printf("\n\nPoluchenniy massiv :\n");
for (i=0;i<n*n;i++)
printf("%4d",b[i]);
getch();
}