Тернарная условная операция - 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);

Объяснение кода листинга программы

  1. j % 2 - операция взятия остатка от деления переменной j на 2. Вернет 0, если j четное, и 1, если j нечетное.
  2. (arr[i][j] = 1) - присваивает элементу массива arr[i][j] значение 1.
  3. (arr[i][j] = 0) - присваивает элементу массива arr[i][j] значение 0.
  4. Выполняется тернарная условная операция: если результат операции j % 2 равен 0, то присваивается значение 1, иначе присваивается значение 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.417 из 5
Похожие ответы