Обработка матриц. Цикл. Проверьте ошибки пожалуйста - C (СИ)
Формулировка задачи:
проверьте на ошибки, пожалуйста. Задача такая: Считывается n размер матрицы. Каждый элемент матрицы равен (i*10+j). Выводятся элементы в строчку в таком порядке: начиная с элемента (1;n) и дальше змейкой, как показано на рисунке, до левого нижнего угла. Вложение 780441
я написал так:
еще не оптимизировал для для матриц маленьких размеров (2х2, 1х1), но уже и для рабочих тестов программа не работает: либо зацикливается, либо выводит какую-то дичь с многозначными и отрицательными числами, так еще и с ошибкой при завершении. в чем проблема?
#include <stdio.h> #include <stdlib.h> const int maxn = 10; int StepBack (int x) { x = x - 1; return x; } int StepForth(int x) { x = x + 1; return x; } int main() { int i, j, n; int m[maxn][maxn]; scanf("%i", &n); for (i = 1; i != (n+1); i++) for (j = 1; j != (n+1); j++) m[i][j] = (i * 10 + j); i = 1; j = n; printf("%3d ", m[i][j]); do { if (j != 1) j = StepBack(j); else i = StepForth(i); printf("%3d ", m[i][j]); while ((j != n) || (i != n)) { i = StepForth(i); j = StepForth(j); printf("%3d ", m[i][j]); } if (i != n) i = StepForth(i); else j = StepBack(j); printf("%3d ", m[i][j]); if ((i == n) && (j == 1)) break; while ((i != 1) || (j != 1)) { i = StepBack(i); j = StepBack(j); printf("%3d ", m[i][j]); } } while ( 1 ); }
Решение задачи: «Обработка матриц. Цикл. Проверьте ошибки пожалуйста»
textual
Листинг программы
scanf("%i", &n); for (i = 0; i < n; i++) for (j = 0; j < n; j++) m[i][j] = ((i+1) * 10 + j + 1);
Объяснение кода листинга программы
В этом коде:
scanf(
%i, &n);
- программа запрашивает у пользователя ввод целого числа, которое будет использоваться как размер матрицы.for (i = 0; i < n; i++)
- начинается цикл, который будет выполнятьсяn
раз, гдеn
- размер матрицы.for (j = 0; j < n; j++)
- внутри предыдущего цикла начинается еще один цикл, который также будет выполнятьсяn
раз.m[i][j] = ((i+1) * 10 + j + 1);
- в этой строке происходит заполнение матрицы значениями. Для каждой ячейки матрицыm[i][j]
присваивается значение, равное(i+1) * 10 + j + 1
. Список:- Программа запрашивает у пользователя ввод целого числа.
- Цикл выполняется
n
раз. - Внутри цикла выполняется еще один цикл, также выполняющийся
n
раз. - Ячейка матрицы
m[i][j]
заполняется значением(i+1) * 10 + j + 1
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д