Програмирование С++, переменные

dimaks
Offline
Зарегистрирован: 09.05.2021

Допустим у меня есть переменная: 

х = 478;

Как мне из этой переменной взять только одну из трёх цифр и вывести на сериал порт?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

dimaks пишет:

Допустим у меня есть переменная: 

х = 478;

Как мне из этой переменной взять только одну из трёх цифр и вывести на сериал порт?

Первая цифра - 4, вторая - 7, третья - 8. Не благодари!

dimaks
Offline
Зарегистрирован: 09.05.2021

Нужно именно в виде кода

rkit
Offline
Зарегистрирован: 23.11.2016

Serial.println(x/100);

Serial.println(x%10);

b707
Offline
Зарегистрирован: 26.05.2017

dimaks пишет:

Как мне из этой переменной взять только одну из трёх цифр и вывести на сериал порт?

а зачем? - я почти на 100% уверен, что тебе это не нужно

dimaks
Offline
Зарегистрирован: 09.05.2021

Я решил сделать автополив растения и вывел состояние датчика влажности на сериал порт. Потом захотел вывести состояние влажности почвы на 4 разрядный индикатор, и подумал, что нужно распределить значение на 3 разряда индикатора.

b707
Offline
Зарегистрирован: 26.05.2017

См ответ #3

Не ясно только, зачем тогда выводить разряды в Сериал?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

dimaks пишет:

Я решил сделать автополив растения и вывел состояние датчика влажности на сериал порт. Потом захотел вывести состояние влажности почвы на 4 разрядный индикатор, и подумал, что нужно распределить значение на 3 разряда индикатора.

Уууу.. Не издевайся над живым организмом. Даже фашисты так не делали. Я даже не спрашиваю, что за датчик у тебя и на каком уровне (глубине) ты ведешь измерения. Автополив очень сложная тема в программировании))

Будь проще: поковыряй поверхность пальцем. Пылит, значит поливай. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

dimaks пишет:

захотел вывести состояние влажности почвы на 4 разрядный индикатор

Бери и выводи

Можно вывести знаковое двухбайтное целое функцией Print(Num);

Display.Print(-50); или 

int val = analogRead(A0);
Display.Print(val);

естественно, если число больше 4 знаков, оно обрежется, т.е 32767 вывести не получится, выведется 3276


Еще функцией Print() можно вывести число с плавающей точкой, но, естественно, тоже с ограничением в первых 4 цифры.  Если тип дисплея - числовой, то запятая выведется в правильном месте, если дисплей для времени, то точек в нем нет, поэтому на него нецелые числа выводить бессмысленно. 

Display(PI);  выведет 3.141
Display(1.5); выведет 1.5

Числа по умолчанию выравниваются по правому краю дисплея, а строки - по левому

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это у нас типа раздел "Программирование"?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ну, просю пардону, не хочет, пусь сам программирует, если Клапа не запретит. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

dimaks пишет:

Допустим у меня есть переменная: 

х = 478;

Как мне из этой переменной взять только одну из трёх цифр и вывести на сериал порт?

Какого типа у Вас переменная? Судя по операции присваивания - одного из целых типов.

У целой переменной нет цифр. От слова совсем. Цифры появляются лишь тогда, когда мы пытаемся преобразовать переменную в текст. Вот символы этого текста (а не переменной) и называются цифрами.

Это к тому, что для того, чтобы решить какую-либо задачу, ее нужно сначала понять.