подскажите в чём ошибка

Тема в разделе "Микроконтроллеры AVR", создана пользователем DRAKO, 26 ноя 2018.

  1. DRAKO

    DRAKO Нуб

    if(ARRAY[a][j]==0 || ARRAY[j] == 0){
    ARRAY[a][j] + ARRAY[j] = 0 ;
    }


    Ругается что поставил знак равно
     
  2. А чего вы этим хотели добиться?
     
  3. DRAKO

    DRAKO Нуб

    чтобы если хотя бы один из элементов равно 0, то сделать их сумму нулём
     
  4. Airbus

    Airbus Радиохулиган Модератор

  5. Это можно сделать бесконечным количеством способов. Можно установить оба значения в 0. Можно установить одно значение в 1, другое в -1. И так далее. Определитесь четче, что вам нужно.
     
  6. parovoZZ

    parovoZZ Гуру

    делов-то
    Код (C++):
    ARRAY[a][j] = - ARRAY[j];
     
  7. Asper Daffy

    Asper Daffy Иксперд

    Никого не смутило, что ARRAY[j] и ARRAY[a][j] - имеют разные типы?
    Если у первого тип Т, то у второго T[] (т.e массив T).

    Что Вы хотите получить сравнивая (а позже складывая) один помидор с массивом помидоров?
     
  8. Разве тип где то декларировали? Может это просто класс с перегруженными операторами, например :)
    Код (C):
    class A {
    public:
       A() {
         this->value = -1;
       }
       int& operator = (int value) {
         this->value = value;
         return this->value;
       }
       bool operator == (int value) const {
         return this->value == value;
       }
       int& operator[](int dummy_index) {
         return this->value;
       }
       int value;
    };
     
     
  9. Asper Daffy

    Asper Daffy Иксперд

    Алексей. я сам люблю так пошутить, но надо дорабатывать до конца - шутить, так уж по Гамбургскому. В Вашем классе никак не отработана ситуация [][]. Вот когда отработаете, тогда и посмотрим какие там типы :)))
     
  10. Как раз проверял на выражении if(ARRAY[a][j]==0 || ARRAY[j] == 0) предварительно проинициализировав ARRAY[a][j] и ARRAY[j], убедился что попадаю в операторы.
    Сначала присвоил ARRAY[a][j] = 0 и ARRAY[j] = 1, при проверке условий попал в индексный оператор, честно сработало первое условие.
    Затем инициализировал ARRAY[a][j] = 1 и ARRAY[j] = 0, при проверке условий сначала попал в индексный оператор, после в оператор bool и сработало второе условие.
    А что не так?
    П.С.
    Код (C):

    void test() {
      A ARRAY[10]; // A - это как раз класс и их ах 10 штук, и ситуация [][] замечательно обрабатывается
    }
     
     
  11. Asper Daffy

    Asper Daffy Иксперд

    Не, ну это не строго! Нет, чтобы [] возвращал, что-то, что само по себе имеет [] - не нужно было бы при объявлении массив заводить. А так ... халтура :)))))
     
  12. Код (C):
    #include <iostream>

    class A {
    public:
       bool operator == (int value) const {
         return this->array[0] == value;
       }
       int& operator = (int value) {
         this->array[0] = value;
         return this->array[0];
       }
       int& operator[](int index) {
         return this->array[index];
       }
    private:
       int array[10];
    };

    class B: public A {
    public:
       A& operator[](int index) {
         return this->array[index];
       }
    private:
       A array[10];
    };

    int main() {
       B ARRAY;
       int a = 1, j = 2;
       ARRAY[a][j] = 1;
       ARRAY[j] = 1;
       if (ARRAY[a][j] == 0 || ARRAY[j] == 0) {
         std::cout << "condition at line: " << __LINE__ << std::endl;
       } else {
         std::cout << "not in if condition at line: " << __LINE__ << std::endl;
       }
       ARRAY[a][j] = 0;
       ARRAY[j] = 1;
       if (ARRAY[a][j] == 0 || ARRAY[j] == 0) {
         std::cout << "condition at line: " << __LINE__ << std::endl;
       } else {
         std::cout << "not in if condition at line: " << __LINE__ << std::endl;
       }
       ARRAY[a][j] = 1;
       ARRAY[j] = 0;
       if (ARRAY[a][j] == 0 || ARRAY[j] == 0) {
         std::cout << "condition at line: " << __LINE__ << std::endl;
       } else {
         std::cout << "not in if condition at line: " << __LINE__ << std::endl;
       }
       return 0;
    }
     
    Код (C):

    not in if condition at line: 36
    condition at line: 41
    condition at line: 48
     
     
  13. Asper Daffy

    Asper Daffy Иксперд

    Маладца! :))))