Выбрать значения элементов матрицы по спирали - 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(); }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Объявляет переменные и массив:
const int N=100;
- определяет константу N, которая равна 100 и используется для определения размера массива;int i,j,n;
- объявляет переменные i, j и n, которые используются для индексации массива;float A[N][N];
- объявляет двумерный массив A размером N на N.
- Запрашивает у пользователя ввод количества строк матрицы:
printf(
vvedite kolichestvo n matrix (n)x(n) 'n<100:);
- выводит сообщение с просьбой ввести количество строк матрицы;scanf_s(
%d, &n);
- считывает введенное значение в переменную n.
- Заполняет массив 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]);
- считывает значение для текущего элемента матрицы.
- Выводит матрицу:
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();
- выполняет паузу до нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д