Тернарная условная операция - C (СИ)
Формулировка задачи:
Компилятор ругается на тернарные условные операции в 25 и 29 строке:
25 error: lvalue required as left operand of assignment
29 error: lvalue required as left operand of assignment
#include <stdio.h> #include <stdlib.h> int main() { /** Инициализация массива **/ printf("Enter n: "); //Введите n: int n; //Создаем перменную n scanf("%d", &n); //Считываем введённое число if(!(n%2)){ // Если нечетное printf("Error! 'n' doljno biti nechetnim...\n");//Ошибка! system("pause"); //Для продолжения нажмите любую клавишу... system("cls"); //Очистка CMD return main(); //Вызываем main() } int arr[n][n]; // Если четное - создаем массив /** Инициализация ячеек **/ // 1 - черные, 0 - белые // Левый нижний угол всегда черный int i, j; // i - строка, j - столбец for( i = n-1; i > 0; i--){//Для столбца i... switch(i%2){ case 0: // если четная строка... for(j = 0; j < n; j++) j%2 ? arr[i][j] = 1 : arr[i][j] = 0; //для четного столбца - 0 , для нечетного - 1 break; case 1: // если нечетная строка... for(j = 0; j < n; j++) j%2 ? arr[i][j] = 0 : arr[i][j] = 1; //для четного столбца - 1 , для нечетного - 0 break; } } /** Результат: вывод массива **/ for( i = 0; i < n; i++){ // Для строки i... for( j = 0; j < n; j++) printf(" %d",arr[i][j]);// для стобца j выводим ячейку printf("\n"); //переход на новую строку } }
Решение задачи: «Тернарная условная операция»
textual
Листинг программы
j%2 ? (arr[i][j] = 1) : (arr[i][j] = 0);
Объяснение кода листинга программы
j % 2
- операция взятия остатка от деления переменнойj
на 2. Вернет 0, еслиj
четное, и 1, еслиj
нечетное.(arr[i][j] = 1)
- присваивает элементу массиваarr[i][j]
значение 1.(arr[i][j] = 0)
- присваивает элементу массиваarr[i][j]
значение 0.- Выполняется тернарная условная операция: если результат операции
j % 2
равен 0, то присваивается значение 1, иначе присваивается значение 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д