Допустим…от ИК пульта принят код типа “329” или “5145”, как программно игнорировать первые цифры “32” и “514” в этих “кодах” и учитывать только последние “9” и “5” для дальнейшей работы в программе.
Найди пятиклассника, пусть он тебе объяснит деление с остатком.
Вы не привели кода и толком не объяснили ситуацию, потому ответить Вам невозможно.
Вот, что Вы понимаете под
???
Это число типа int
? Или строка символов типа char *
?
И как Вам прикажете отвечать? В этих двух случаях, задача решается по-разному.
Всегда (от слова ВСЕГДА) (для альтернативно одарённых, помедленнее: В_С_Е_Г_Д_А ) пост с вопросом должен содержать код.
- для числа - возьмите остаток от деления на
10
. - для строки - возьмите символ по индексу
strlen(s)-1
.
ставлю на то что ТСу на приемник приходит мусор, ТС заметил что при нажатии одних и тех же кнпок, при данных условиях среды , последнее число в мусоре постоянно,вот и подумал отбрасывать все кроме последнего.
Ребят! Спасибо за помощь, но я действительно жёстко затупил…Это ж дельно даже не 5й класс, а 3й…Карл! Третий класс!!!
Стыдоба блин
Тему можно закрыть. Всем спасибо!
ответы-то на вопросы будут? А то больше смахивает на то, что вы ничего не поняли и потому решили поискать другой форум, где вам сразу напишут готовый код
Вопрос решён спасибо первому комментарию про пятиклассника…
Признаю, затупил
Вот код с решением (надеюсь нормально отобразится в теме, я впервой тут что-то пишу)
Конкретно в строке 44
#include <IRremote.h>
IRsend irsend;
IRrecv ir_rx(2);
decode_results ir_rx_results;
unsigned long fnc_ir_rx_decode()
{
bool decoded=false;
if( ir_rx.decode(&ir_rx_results))
{
decoded=true;
ir_rx.resume();
}
if(decoded)
return ir_rx_results.value;
else
return 0;
}
void setup() {
Serial.begin(9600);
ir_rx.enableIRIn();
}
void loop() {
R = (unsigned long)fnc_ir_rx_decode();
if (R > 0) {
Serial.println(R);
if (R > 0) {
pinMode(13, OUTPUT);
digitalWrite(13, 1);
delay(30);
}
}
if (R == 0) {
pinMode(13, OUTPUT);
digitalWrite(13, 0);
}
if (R > (0 < 9999)) {
R = (int)R % (int)(int)10000 % (int)(int)1000 % (int)(int)100 % (int)10;
pinMode(13, OUTPUT);
digitalWrite(13, 1);
delay(30);
Serial.println(R);
}
if (R == 0) {
pinMode(13, OUTPUT);
digitalWrite(13, 0);
}
}
Даже если бы скетч компилировался, остается вопрос - а дважды int - это зачем?
Петрович тут писал в соседней теме - “для надежности”
дважды? У меня, наверно, расплывается - я вижу в этой строке (int) восемь раз.
ТС, вы что курили сегодня?
Обьясните, если вам надо выделить из числа ОДНУ цифру - зачем применять операцию выделения остатка 4 раза???
аааа , я догадался :))) По числу цифр??? А если придет пяти значное число - что делать будете?
ЗЫ Совет посоветоваться пятиклассником был правильный. Посоветуйтесь. Вы написали полный бред.
вот это тоже шикарное условие
Да про ступенчатое деление я вообще спрашивать не стал, это за гранью разумного, но вот двойной int …
и вот это… ТС никому не верит. Вдруг за одну строку R таки изменился (ну а вдруг??) - проверим еще раз…
Творческий человек…
Василий! Если вам надо выделить последнюю цифру десятичного числа - это делается так:
R = R %10;
И ВСЕ.
Ничего больше не надо. Действует на числа с любым числом разрядов.
Не пишите программ. Это не ваше.
Спасибо за простое решение. За совет тоже благодарю и сделаю так как считаю нужным.
Я полагаю что тут все родились кодерами…извините, мне немного не повезло, я только учусь
За свои много лет я привык к “добрым” советам от профессионалов и знаете, если бы не они и вы, то я бы никогда не горел желанием что либо изучать, делать, ломать и снова делать…
А вы продолжайте стебаться над чужими ошибками, всячески подкалывать…это ведь так вдохновляет
ПС Я коснулся этой темы 2 месяца назад и думаю некоторые ошибки или затупы вполне нормальное явление для меня
Всем спасибо
Пожалуйста.
Обратите внимание так же на две других полколки. Ваши условия сформулированы неверно и будут работать совсем не так, как вы думаете.
Например вот эта строка
полностью аналогична вот такой
if (R > 1)
я уверен, что вы хотели написать совсем иное
Не всякий может быть программистом. Так же как не всякий может быть сварщиком. Или электриком. Можно чему-то научиться, чего-то нахвататься, но проку все равно не будет. У вас проблемы с логикой (это без стеба, просто констатация), а без логики в программировании никуда
Возможно, 2 месяца изучения языка С недостаточно. чтобы узнать как пользоваться операцией “%”. Однако за это время вполне можно было научиться задавать вопросы гуглю, а не писать фигню на форум.
Мы же не знаем, как именно ТС “учится”. Если учебник, то 2 месяца вполне достаточно. чтобы такую хрень не городить. Если что, лазанье по интернет-помойкам в поисках нужного куска кода не есть учеба. Так можно до морковкиного заговения учиться
думаю, мы этого уже не узнаем