Выбрать значения элементов матрицы по спирали - 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();
- выполняет паузу до нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д