Написать цикл который будет заменять часть массива(который состоит из 0) на 1
Здравствуйте я столкнулся с небольшой проблемой. Нужно написать такой цикл, чтобы часть массива, который состоит из , заменялась на 1. К примеру, чтобы массив
000
000
000
000
000
000
000
000
000
стал таким -
111
111
111
000
000
000
000
000
000
Причем нужно чтобы общее число 1 в массиве равнялось n^2, а n - это число вводимое с клавиатуры. Надеюсь я смог нормально все объяснить. Буду очень благодарен за помощь.
Вот основная часть написанной мной программы, для которой и нужно написать цикл:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, num = 0, test = 0;
printf("Vvedite znachenie n: ");
scanf("%d", &n);
num = n*n;
int a[n][n][n], i = 0, j = 0, k = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
for (k = 0; k < n; k++)
{
a[i][j][k] = 0;
}
}
}
//Тут нужно написать цикл
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
for (k = 0; k < n; k++)
{
printf("%d\t", a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
}
Ответы (1 шт):
Автор решения: Павел Ериков
→ Ссылка
Вот пример кода с комментариями:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n ;
printf("Vvedite znachenie n: ");
scanf("%d", &n);
int a[n][n][n];
int i = 0; //высота
int j = 0; //строка
int k = 0; //столбец
//Установим первую высоту (если в трехмерном рассматривать прсотранстве) как все единицы
//как раз будет n^2 единиц
for (j = 0; j < n; j++)
for (k = 0; k < n; k++)
a[0][j][k] = 1;
//Остальное просто нулями
for (i = 1; i < n; i++)
for (j = 0; j < n; j++)
for (k = 0; k < n; k++)
a[i][j][k] = 0;
//Вывод
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
for (k = 0; k < n; k++)
{
printf("%d\t", a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return 0;
}