При определенном условии сгенерировать массив - C (СИ)
Формулировка задачи:
Нужно при определенном условии сгенерировать массив, если написать это условие:
то получается такой массив:
0 0 0 4
0 0 3 4
0 2 3 4
1 2 3 4.
Как подправить условие, чтобы вывело такой массив:
0 0 0 1
0 0 1 2
0 1 2 3
1 2 3 4.
То есть массив должен и дальше продолжаться при разной размерности
- если в этой строчке изменить условие на
то он выведет правильный массив при размерности 4, но при больших размерностях уже будет не правильный
int i,j; for(i=0; i<n; i++) for(j=0; j<n; j++) x[i][j]=(j<n-i-1) ? 0:j+1;
x[i][j]=(j<n-i-1) ? 0:j+1;
x[i][j]=(j<n-i-1) ? 0:j+i-2;
Решение задачи: «При определенном условии сгенерировать массив»
textual
Листинг программы
#include <stdio.h>
int main(void){
int i, j, size;
printf("Size: ");
scanf("%d", &size);
printf("\n");
for ( i = 0; i < size; ++i )
for ( j = 0; j < size; ++j )
printf("%d%c", ( i + j + 2 - size < 0 ) ? 0 : i + j + 2 - size, ( j < size - 1 ) ? ' ' : '\n');
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены три переменные: i, j, size.
- Пользователю предлагается ввести размер массива с помощью функции scanf.
- Выводится размер массива.
- Используя два вложенных цикла, выводится массив.
- В каждой ячейке массива проверяется условие ( i + j + 2 - size < 0 ) ? 0 : i + j + 2 - size, которое генерирует уникальные значения для каждой ячейки массива.
- Если это условие истинно, то выводится 0, иначе выводится значение ( i + j + 2 - size ).
- После каждой строки массива выводится символ новой строки '\n', если значение j меньше размера массива минус один.
- Возвращается 0, завершая программу.