Обработка матриц. Цикл. Проверьте ошибки пожалуйста - C (СИ)

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

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

проверьте на ошибки, пожалуйста. Задача такая: Считывается n размер матрицы. Каждый элемент матрицы равен (i*10+j). Выводятся элементы в строчку в таком порядке: начиная с элемента (1;n) и дальше змейкой, как показано на рисунке, до левого нижнего угла. Вложение 780441 я написал так:
#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 );
 
}
еще не оптимизировал для для матриц маленьких размеров (2х2, 1х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);

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

В этом коде:

  1. scanf(%i, &n); - программа запрашивает у пользователя ввод целого числа, которое будет использоваться как размер матрицы.
  2. for (i = 0; i < n; i++) - начинается цикл, который будет выполняться n раз, где n - размер матрицы.
  3. for (j = 0; j < n; j++) - внутри предыдущего цикла начинается еще один цикл, который также будет выполняться n раз.
  4. m[i][j] = ((i+1) * 10 + j + 1); - в этой строке происходит заполнение матрицы значениями. Для каждой ячейки матрицы m[i][j] присваивается значение, равное (i+1) * 10 + j + 1. Список:
  5. Программа запрашивает у пользователя ввод целого числа.
  6. Цикл выполняется n раз.
  7. Внутри цикла выполняется еще один цикл, также выполняющийся n раз.
  8. Ячейка матрицы m[i][j] заполняется значением (i+1) * 10 + j + 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы