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

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

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

проверьте на ошибки, пожалуйста. Задача такая: Считывается n размер матрицы. Каждый элемент матрицы равен (i*10+j). Выводятся элементы в строчку в таком порядке: начиная с элемента (1;n) и дальше змейкой, как показано на рисунке, до левого нижнего угла. Вложение 780441 я написал так:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. const int maxn = 10;
  4. int StepBack (int x)
  5. {
  6. x = x - 1;
  7. return x;
  8. }
  9. int StepForth(int x)
  10. {
  11. x = x + 1;
  12. return x;
  13. }
  14. int main()
  15. {
  16. int i, j, n;
  17. int m[maxn][maxn];
  18. scanf("%i", &n);
  19. for (i = 1; i != (n+1); i++)
  20. for (j = 1; j != (n+1); j++)
  21. m[i][j] = (i * 10 + j);
  22. i = 1; j = n;
  23. printf("%3d ", m[i][j]);
  24. do
  25. {
  26. if (j != 1)
  27. j = StepBack(j);
  28. else
  29. i = StepForth(i);
  30. printf("%3d ", m[i][j]);
  31.  
  32. while ((j != n) || (i != n))
  33. {
  34. i = StepForth(i);
  35. j = StepForth(j);
  36. printf("%3d ", m[i][j]);
  37. }
  38. if (i != n)
  39. i = StepForth(i);
  40. else
  41. j = StepBack(j);
  42. printf("%3d ", m[i][j]);
  43. if ((i == n) && (j == 1))
  44. break;
  45. while ((i != 1) || (j != 1))
  46. {
  47. i = StepBack(i);
  48. j = StepBack(j);
  49. printf("%3d ", m[i][j]);
  50. }
  51.  
  52. }
  53. while ( 1 );
  54. }
еще не оптимизировал для для матриц маленьких размеров (2х2, 1х1), но уже и для рабочих тестов программа не работает: либо зацикливается, либо выводит какую-то дичь с многозначными и отрицательными числами, так еще и с ошибкой при завершении. в чем проблема?

Решение задачи: «Обработка матриц. Цикл. Проверьте ошибки пожалуйста»

textual
Листинг программы
  1.     scanf("%i", &n);
  2.     for (i = 0; i < n; i++)
  3.         for (j = 0; j < n; j++)
  4.             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

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

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

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