@ilya777741

Как заполнить квадратную матрицу 8x8 по указанной схеме?

Дан одномерный массив целых чисел А размерностью 64. Получить квадратную матрицу порядка 8 ,элементами которой являются числа массива А, расположенные в ней по схеме (прикладываю схему)
5b37b55e9d2ad169580826.png

У меня программа выводит следующее:
5b37b5af3191c079644897.png

Мой код:
int main()
{
	int p[64];
	int a[8][8];
	int n = 8, i = 0, j = 7, k, l = 1;


	for (k = 0; k<n*n; k++)
		p[k] = k;

	for (k = 0; k<n*n; k++)
	{
		a[i][j] = p[k];


		// значение l равно 0 при движении влево по диагонали и 1 при движении вниз
		if (i == 0 && j > 0 && l == 0)
		{
			j--; l = 1;
		}
		else if (i == n-1 && j > 0 && l == 0)
		{
			j--; l = 1;
		}
		else if (i == 0 && j < n - 1 && l == 1)
		{
			j++; l = 0;
		}
		else if (j == n - 1 && l == 1)
		{
			i++; l = 0;
		}
		else  if (l == 0)
		{
			i--; j++;
		}
		else
		{
			i++; j--;
		}

	}


	for (i = 0; i<n; i++)
	{
		for (j = 0; j<n; j++)
			printf("%d ", a[i][j]);
		printf("\n");
	}
return 0;
}


Помогите разобраться, что я не так сделал? Спасибо.
  • Вопрос задан
  • 812 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Wundarshular
У вас i и j меняются с 0 на 1 и обратно и с 7 на 8 и обратно соответственно. Элементы массива за пределами указываемых ими диапазонов остаются не инициализированными, поэтому там хранится "мусор". Как отметил SagePtr, вам следует пересмотреть условия, по которым вы перемещаете условный курсор по массиву.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы