Как создать программу, которая читает девять целых чисел в массив 3х3 - PullRequest
0 голосов
/ 25 сентября 2019
#include <stdio.h>

int main()
{
  int test[2][3][2];
  printf("Enter nine values: \n");
  for (int i = 0; i < 3; ++i)
  {
    for (int j = 0; j < 3; ++j)
    {
      for (int k = 0; k < 1; ++k)
      {
        scanf("%d", &test[i][j][k]);
      }
    }
  }
  // Printing values with proper index.
  printf("\nDisplaying values:\n");
  for (int i = 0; i < 2; ++i)
  {
    for (int j = 0; j < 3; ++j)
    {
      for (int k = 0; k < 2; ++k)
      {
     printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);
      }
    }
  }
  return 0;
}

Возможно, я просто делаю это неправильно, но у меня возникают проблемы с пониманием того, как заставить мою программу читать только 9 целых чисел, выводя массив 3x3 от пользователя.Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Вы хотите использовать 2D-массив (другими словами, матрицу) размером 3x3, так что в конечном итоге вам нужно что-то вроде этого:

int arr[3][3];

, который создает 2D-массив с 3 строками и3 колонки.В своей попытке вы использовали 3-мерный массив, что не соответствует вашим ожиданиям.

Я думаю, вы поймете все остальное (что вы уже знаете из того, что я вижу из вашей удачной попытки) из моего примера:

#include <stdio.h>

#define N 3
#define M 3

int main(void)
{
  int arr[N][M] = {0};

  for(int i = 0; i < N; i++)
    for(int j = 0; j < M; j++)
      scanf("%d", &arr[i][j]);

  for(int i = 0; i < N; i++)
  {
    for(int j = 0; j < M; j++)
      printf("%d ", arr[i][j]);
    printf("\n");
  }

  return 0;
}

См. Также в прямом эфире .

0 голосов
/ 25 сентября 2019

Вы не следите за размерами вашего массива вообще.Здесь у вас есть трехмерный массив, размеры 2 x 3 x 2. Предположим, что он заполнен нулями, чтобы помочь визуализировать:

[
  [
    [0, 0],
    [0, 0],
    [0, 0]
  ],
  [
    [0, 0],
    [0, 0],
    [0, 0]
  ]
]

Имейте в виду, что массив проиндексирован 0 до n-1где n - размер массива.

Ваш первый цикл for повторяется до 2, что равно размеру самого внешнего массива.Это приведет к ошибке сегментации.

Вам следует использовать двумерный массив и #define ваши размеры.

...