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

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

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

Помогите пожалуйста с задачкой. Задание:Дана действительная квадратная матрица порядка n*n.Найти последовательность действительных чисел,получающихся при чтении данной матрицы по СПИРАЛИ. Добавлено через 1 час 40 минут 34 секунды
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <conio.h>
  4. int main()
  5. {
  6. const int N=100;
  7. int i,j,n;
  8. float A[N][N];
  9. printf("vvedite kolichestvo n matrix (n)x(n) 'n<100: ");
  10. scanf_s("%d", &n);
  11. for (i=0;i<n;i++)
  12. for (j=0;j<n;j++)
  13. {
  14. printf("A[%d][%d]",i,j);
  15. scanf("%f",&A[i][j]);
  16. }
  17.  
  18. printf("\n Matrix n x n: ishodnaya\n\n");
  19. for (i=0;i<n;i++)
  20. {
  21. for (j=0;j<n;j++)
  22. printf(" %6.2f ",A[i][j]);
  23. printf("\n");
  24. }
Ввод массива.Как сделать функцию считывания не знаю.

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

textual
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <conio.h>
  5. #include <ctype.h>
  6. #include <stdlib.h>
  7. #include <string.h>  
  8. #include "locale.h"
  9.  
  10. int main()
  11. {
  12. const int N=100;
  13. int i,j,n;
  14. float A[N][N];
  15. printf("vvedite kolichestvo n matrix (n)x(n) 'n<100: ");
  16. scanf_s("%d", &n);
  17.  
  18. for (i=0;i<n;i++)
  19. for (j=0;j<n;j++)
  20.         {
  21.         printf("A[%d][%d]",i,j);
  22.         scanf_s("%f",&A[i][j]);
  23.         }
  24.  
  25.  
  26. printf("\n Matrix n x n: ishodnaya\n\n");
  27.  
  28. for (i=0;i<n;i++)
  29. {
  30.  for (j=0;j<n;j++)
  31.         printf("   %6.2f   ",A[i][j]);
  32.  printf("\n");
  33. }
  34.  
  35. for (int j = 0, m = n; j <= m; j ++, m --){
  36.                 for (int i = j; i < m; i ++){
  37.                         printf ("%6.2f ", A[j][i]);
  38.                 }
  39.                 for (int i = j + 1; i < m; i ++){
  40.                         printf ("%6.2f ", A[i][n - j - 1]);
  41.                 }
  42.                 for (int i = j + 1; i < m; i ++){
  43.                         printf ("%6.2f ", A[n - j - 1][n - i - 1]);
  44.                 }
  45.                 for (int i = j + 1; i < m - 1; i ++){
  46.                         printf ("%6.2f", A[n - i - 1][j]);
  47.                 }
  48.         }
  49. _getche();
  50. }

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

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы