
23.02.2010, 10:22
|
Прохожий
|
|
Регистрация: 23.02.2010
Сообщения: 2
Репутация: 10
|
|
Исходник С++
Код:
setlocale(2,"rus");
int i, j, k, n, p; // n - размер матрицы, j - вспомогательный индекс
printf("Введите размер квадратной матрицы: ");
fflush(stdin);
scanf("%d", &n); // ввод числа в n
int **A = new int*[n];
for(i=0; i<n; i++) A[i] = new int[i];
i = n*n; // i-текущее число
p = n/2; // p - центральный элемент
for(k=1; k<=p; k++) // к - номер витка
{
for(j=k-1; j<n-k+1; j++) A[n-k][j] = i--; // снизу
for(j=n-k-1; j>=k-1; j--) A[j][n-k] = i--; // справа
for(j=n-k-1; j>=k-1; j--) A[k-1][j] = i--; // сверху
for(j=k; j<n-k; j++) A[j][k-1] = i--; // слева
}
if(n%2==1) A[p][p]=1; // центральный элемент для нечётных n
// далее вывод
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++) printf(" %4d ",A[i][j]);
}
printf("\n\nНажмине любую клавишу для выхода...");
getch();
return 0;
Admin: Пользуемся тегами!
|