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