Выбрать значения элементов матрицы по спирали - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста с задачкой. Задание:Дана действительная квадратная матрица порядка n*n.Найти последовательность действительных чисел,получающихся при чтении данной матрицы по СПИРАЛИ. Добавлено через 1 час 40 минут 34 секунды
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
 
int main()
{
const int N=100;
int i,j,n;
float A[N][N];
printf("vvedite kolichestvo n matrix (n)x(n) 'n<100: ");
scanf_s("%d", &n);
 
for (i=0;i<n;i++)
for (j=0;j<n;j++)
    {
    printf("A[%d][%d]",i,j);
    scanf("%f",&A[i][j]);
    }

printf("\n Matrix n x n: ishodnaya\n\n");
 
for (i=0;i<n;i++)
{
 for (j=0;j<n;j++)
    printf("   %6.2f   ",A[i][j]);
 printf("\n");
}
Ввод массива.Как сделать функцию считывания не знаю.

Решение задачи: «Выбрать значения элементов матрицы по спирали»

textual
Листинг программы
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>  
#include "locale.h"
 
int main()
{
const int N=100;
int i,j,n;
float A[N][N];
printf("vvedite kolichestvo n matrix (n)x(n) 'n<100: ");
scanf_s("%d", &n);
 
for (i=0;i<n;i++)
for (j=0;j<n;j++)
        {
        printf("A[%d][%d]",i,j);
        scanf_s("%f",&A[i][j]);
        }
 
 
printf("\n Matrix n x n: ishodnaya\n\n");
 
for (i=0;i<n;i++)
{
 for (j=0;j<n;j++)
        printf("   %6.2f   ",A[i][j]);
 printf("\n");
}
 
for (int j = 0, m = n; j <= m; j ++, m --){
                for (int i = j; i < m; i ++){
                        printf ("%6.2f ", A[j][i]);
                }
                for (int i = j + 1; i < m; i ++){
                        printf ("%6.2f ", A[i][n - j - 1]);
                }
                for (int i = j + 1; i < m; i ++){
                        printf ("%6.2f ", A[n - j - 1][n - i - 1]);
                }
                for (int i = j + 1; i < m - 1; i ++){
                        printf ("%6.2f", A[n - i - 1][j]);
                }
        }
_getche();
}

Объяснение кода листинга программы

Код выполняет следующие действия:

  1. Объявляет переменные и массив:
    • const int N=100; - определяет константу N, которая равна 100 и используется для определения размера массива;
    • int i,j,n; - объявляет переменные i, j и n, которые используются для индексации массива;
    • float A[N][N]; - объявляет двумерный массив A размером N на N.
  2. Запрашивает у пользователя ввод количества строк матрицы:
    • printf(vvedite kolichestvo n matrix (n)x(n) 'n<100: ); - выводит сообщение с просьбой ввести количество строк матрицы;
    • scanf_s(%d, &n); - считывает введенное значение в переменную n.
  3. Заполняет массив A значениями, введенными пользователем:
    • for (i=0;i<n;i++) - начинает цикл для заполнения строк матрицы;
    • for (j=0;j<n;j++) - начинает цикл для заполнения столбцов матрицы;
    • printf(A[%d][%d],i,j); - выводит индекс текущего элемента матрицы;
    • scanf_s(%f,&A[i][j]); - считывает значение для текущего элемента матрицы.
  4. Выводит матрицу:
    • printf(\n Matrix n x n: ishodnaya\n\n); - выводит сообщение с указанием размера матрицы;
    • for (i=0;i<n;i++) - начинает цикл для вывода строки;
    • for (j=0;j<n;j++) - начинает цикл для вывода столбца;
    • printf (%6.2f , A[i][j]); - выводит значение элемента матрицы;
    • printf(\n); - выводит символ новой строки.
  5. Выполняет поиск значений по спирали:
    • for (int j = 0, m = n; j <= m; j ++, m --) - начинает цикл для обхода матрицы по спирали;
    • for (int i = j; i < m; i ++) - начинает цикл для вывода элементов матрицы в текущей строке;
    • printf (%6.2f , A[j][i]); - выводит значение элемента матрицы;
    • for (int i = j + 1; i < m; i ++) - начинает цикл для вывода элементов матрицы в текущей строке;
    • printf (%6.2f , A[i][n - j - 1]); - выводит значение элемента матрицы;
    • for (int i = j + 1; i < m; i ++) - начинает цикл для вывода элементов матрицы в текущей строке;
    • printf (%6.2f , A[n - j - 1][n - i - 1]); - выводит значение элемента матрицы;
    • for (int i = j + 1; i < m - 1; i ++) - начинает цикл для вывода элементов матрицы в текущей строке;
    • printf (%6.2f, A[n - i - 1][j]); - выводит значение элемента матрицы;
    • _getche(); - выполняет паузу до нажатия клавиши.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.375 из 5
Похожие ответы