Показать сообщение отдельно
  #4  
Старый 23.02.2010, 10:22
svg1007 svg1007 вне форума
Прохожий
 
Регистрация: 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: Пользуемся тегами!
Ответить с цитированием