Обработка матриц. Цикл. Проверьте ошибки пожалуйста - 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.