Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34

Передача объекта и значения в теле функции

05.06.2022, 20:19. Показов 1024. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите пожалуйста как передать объект и значение в тело функции в arduino ide.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void oneClick(int x, object) {
  if (x == 0) {
  for (int i = x; i <= 70; i++){
    delay (50);
    object.setPower(i);
   
  }
    
  }
  else {
    for (int i = x; i >= 0; = i--){
    delay (50);
    object.setPower(i);
  }
  }  
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2022, 20:19
Ответы с готовыми решениями:

В теле главной функции ввести значения делимого и делителя, создать соответствующие объекты и вывести результат деления
Помогите пожалуйста с маленькой программой, то есть я прошу у вас решение. Вот собственно задание: &lt;&lt; Функция mod является...

Передача значения от объекта, созданного программно
Доброго времени суток! Есть у меня такой код void FillContexMenuStrip() { if (comboBox1.SelectedIndex != 0) ...

Передача объекта по значению, но не все значения верны
Доброго времени суток, немного растерян результатами вывода Dynamic f(Dynamic obj) { cout &lt;&lt; &quot;obj value &quot;...

13
 Аватар для programmer_08
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
05.06.2022, 20:43
Цитата Сообщение от aset224 Посмотреть сообщение
object
что ето такое? тип или имя переменной?
1
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34
06.06.2022, 04:25  [ТС]
Это не переменная это объект
0
 Аватар для YUEN HOIFEF
252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
06.06.2022, 04:41
aset224,
Обьект какого типа?
Во вторых , э вас это не работает? Или что?
1
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34
06.06.2022, 04:58  [ТС]
не передает объект в тело функции. я не знаю как это реализовать. без функции у меня все работает но строк кода достигает 1000. поэтому хотелось бы это все уменьшить с помощью функции.
0
 Аватар для YUEN HOIFEF
252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
06.06.2022, 05:37
aset224,
Что этот обьект из себя представляет, откуда он взялся? Для чего он.
1
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34
06.06.2022, 06:24  [ТС]
не знаю как назвать правильно, назову как думаю. Dimmer это короткое имя функции.
например
C++
1
2
dimmerLamp dimmer1(12, 2);
dimmerLamp dimmer2(13, 2);
но сама функция dimmerLamp выглядит вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class dimmerLamp 
{         
    private:
        int current_num;
        int timer_num;
        bool toggle_state;
        int tog_current;
        
        void port_init(void);
        void timer_init(void);
        void ext_int_init(void);
        
    public:   
        uint16_t pulse_begin;
        int dimmer_pin;
        int tog_max;
        int tog_min;
        
#if !(defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_SAMD))
        int zc_pin;
 
        dimmerLamp(int user_dimmer_pin, int zc_dimmer_pin);
#else
        dimmerLamp(int user_dimmer_pin);
#endif
        void begin(DIMMER_MODE_typedef DIMMER_MODE, ON_OFF_typedef ON_OFF);
        void setPower(int power);
        int  getPower(void);
        void setState(ON_OFF_typedef ON_OFF);
        bool getState(void);
        void changeState(void);
        void setMode(DIMMER_MODE_typedef DIMMER_MODE);
        DIMMER_MODE_typedef getMode(void);
        void toggleSettings(int minValue, int maxValue);  
};
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
06.06.2022, 06:42
Лучший ответ Сообщение было отмечено aset224 как решение

Решение

Судя по документации, так же, как и в обычном С++.

Два основных варианта без копирования объекта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// по ссылке
void oneClick(int x, dimmerLamp &object) {
    if (x == 0) {
        for (int i = x; i <= 70; i++){
            delay (50);
            object.setPower(i);
 
        }
 
    }
    else {
        for (int i = x; i >= 0; i--){
            delay (50);
            object.setPower(i);
        }
    }
}
 
// через указатель
void oneClick(int x, dimmerLamp *object) {
    if (x == 0) {
        for (int i = x; i <= 70; i++){
            delay (50);
            object->setPower(i);
 
        }
 
    }
    else {
        for (int i = x; i >= 0; i--){
            delay (50);
            object->setPower(i);
        }
    }
}
И, соотвественно, два варианта использования
C++
1
2
3
4
5
6
7
    dimmerLamp dimmer1(12, 2);
    dimmerLamp dimmer2(13, 2);
 
    // передача по ссылке
    oneClick(1, dimmer1);
    // передача по указателю
    oneClick(1, &dimmer1);
Обратите внимание, что класс dimmerLamp должен быть уже описан до описания функции.
1
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34
06.06.2022, 06:45  [ТС]
Спасибо большое сегодня проверю
0
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34
09.06.2022, 20:30  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Обратите внимание, что класс dimmerLamp должен быть уже описан до описания функции.
Спасибо большое, все сработало, но надо было самому еще голову поломать.
сделал несколько функции которые облегчили код, да и дали мне толчок в понимании программирование.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void oneClick(int x, dimmerLamp &object) {
  if (x == 0) {
  for ( x; x <= 30; x++){
    delay (10);
    object.setPower(x);
    
  }
    
  }
  else {
    for (x; x >= 0; x--){
    delay (10);
    object.setPower(x);
  }
  }
}
 
void tripleClick(int x, int y, dimmerLamp &object1, dimmerLamp &object2) {
  if (x == 0 && y == 0) {
    x =70;
    y =70;
    object1.setPower(x);
    delay (500);
    object2.setPower(y);
  }
  else {
    x =0;
    y =0;
    object1.setPower(x);
    delay (500);
    object2.setPower(y);
  }
}
 
void step1(int x, dimmerLamp &object) {
  x = x + 1;
  object.setPower(x);
}
void step2(int x, dimmerLamp &object) {
  x = x - 1;
  object.setPower(x);
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
10.06.2022, 00:35
Цитата Сообщение от aset224 Посмотреть сообщение
void oneClick(int x, dimmerLamp &object) {
  if (x == 0) {
  for ( x; x <= 30; x++){
    delay (10);
    object.setPower(x);
}
}
  else {
    for (x; x >= 0; x--){
    delay (10);
    object.setPower(x);
  }
  }
}
Если х не ноль, функция ничего не будет делать?

Цитата Сообщение от aset224 Посмотреть сообщение
void tripleClick(int x, int y, dimmerLamp &object1, dimmerLamp &object2) {
  if (x == 0 && y == 0) {
    x =70;
    y =70;
    object1.setPower(x);
    delay (500);
    object2.setPower(y);
  }
  else {
    x =0;
    y =0;
    object1.setPower(x);
    delay (500);
    object2.setPower(y);
  }
}
Я правильно понимаю, что функция работает так:
если х и у нули, то вызываем setPower(70) для первого объекта, ждём 500, вызываем setPower(70) Для второго объекта,
если х и у не нули, то вызываем setPower(0) для первого объекта, ждём 500, вызываем setPower(0) Для второго объекта.

Может тогда её проще написать, без ветвления:
C++
1
2
3
4
5
6
void tripleClick(int x, int y, dimmerLamp &object1, dimmerLamp &object2) {
    int value = (x == 0 && y == 0) ? 70 : 0;
    object1.setPower(value);
    delay(500);
    object2.setPower(value);
}
1
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34
10.06.2022, 06:12  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Я правильно понимаю, что функция работает так:
Да вы все правильно поняли почти, насчет "else" тут правильнее сказать x != 0 или y != 0. то выполняется
C++
1
2
3
    object1.setPower(0);
    delay(500);
    object2.setPower(0);
и наоборот x == 0 and y == 0
C++
1
2
3
    object1.setPower(70);
    delay(500);
    object2.setPower(70);
Цитата Сообщение от lemegeton Посмотреть сообщение
Если х не ноль, функция ничего не будет делать?
тут если x != 0 то будет то для object.setPower(x) "х" будет снижаться с текучего значения до нуля, на одну единицу за цикл, ну и задержка в 10 миллисекунд.
setPower(x) нужен для установки мощности (грубо говоря) потребителя в моем случае лампочка, где "х" - это процент яркости (0-100%)

Добавлено через 2 минуты
Ну а функции, нужны были для того чтобы сократить код, и облегчить ситуацию в коде, при изменении настроек, не только чтоб работало а было приятное визуальное изменение яркости лампочки, ну таких ламп у меня 10шт. и для каждого такое писать некамильфо

Добавлено через 1 час 31 минуту
У меня вопрос будет ли работать функция, если ее вызвать в другой функции?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
10.06.2022, 08:27
Цитата Сообщение от aset224 Посмотреть сообщение
правильнее сказать x != 0 или y != 0
Цитата Сообщение от aset224 Посмотреть сообщение
if (x == 0 && y == 0) {
Я вам баг нашёл.

Цитата Сообщение от aset224 Посмотреть сообщение
У меня вопрос будет ли работать функция, если ее вызвать в другой функции?
Конечно будут.
1
2 / 2 / 0
Регистрация: 17.11.2016
Сообщений: 34
18.06.2022, 20:59  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Я вам баг нашёл.
Извините что так часто пропадал)
нет это не баг, но спасибо. просто не правильно выразился.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2022, 20:59
Помогаю со студенческими работами здесь

Передача в Service постоянно обновляющего свои значения объекта
Передаю в Service объект с помощью Parceble, но он сохраняет фиксированное значение, не учитывая его обновления. Как правильно передать...

Вставка значения в конкретную ячейку объекта DataTable, передача данных в БД
Добрый день всем. Пытаюсь реализовать передачу данных от приложения в БД. Есть приложение &quot;Терминал&quot; на WPF, куда загружаются...

Передача функции заранее неизвестного объекта
Здравствуйте. Можно ли не используя шаблонов передать функции объект заранее неизвестного класса и применить к нему функцию-член? ...

Передача функции объекта с определенным интерфейсом
Всем привет. Спасите пожалуйста:) Сделал библиотеку классов using System; using System.Collections.Generic; using System.Linq; ...

Передача объекта как аргумент функции
В функцию аргумент можно передавать разными способами, но бывает что возникает ошибка. Хочу прояснить ситуацию как правильно передавать в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru