Как "вырезать" все цифры кроме последней из числа с неизвестным количеством цифр?

Допустим…от ИК пульта принят код типа “329” или “5145”, как программно игнорировать первые цифры “32” и “514” в этих “кодах” и учитывать только последние “9” и “5” для дальнейшей работы в программе.

Найди пятиклассника, пусть он тебе объяснит деление с остатком.

2 лайка

@Brito,

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

Вот, что Вы понимаете под

???

Это число типа int? Или строка символов типа char *?

И как Вам прикажете отвечать? В этих двух случаях, задача решается по-разному.

Всегда (от слова ВСЕГДА) (для альтернативно одарённых, помедленнее: В_С_Е_Г_Д_А ) пост с вопросом должен содержать код.

  1. для числа - возьмите остаток от деления на 10.
  2. для строки - возьмите символ по индексу strlen(s)-1.
1 лайк

ставлю на то что ТСу на приемник приходит мусор, ТС заметил что при нажатии одних и тех же кнпок, при данных условиях среды , последнее число в мусоре постоянно,вот и подумал отбрасывать все кроме последнего.

Ребят! Спасибо за помощь, но я действительно жёстко затупил…Это ж дельно даже не 5й класс, а 3й…Карл! Третий класс!!!

Стыдоба блин :frowning:

Тему можно закрыть. Всем спасибо!

ответы-то на вопросы будут? А то больше смахивает на то, что вы ничего не поняли и потому решили поискать другой форум, где вам сразу напишут готовый код

Вопрос решён спасибо первому комментарию про пятиклассника…
Признаю, затупил
Вот код с решением (надеюсь нормально отобразится в теме, я впервой тут что-то пишу)
Конкретно в строке 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 раза???
аааа , я догадался :))) По числу цифр??? А если придет пяти значное число - что делать будете?

ЗЫ Совет посоветоваться пятиклассником был правильный. Посоветуйтесь. Вы написали полный бред.

вот это тоже шикарное условие :slight_smile:

2 лайка

Да про ступенчатое деление я вообще спрашивать не стал, это за гранью разумного, но вот двойной int … :slightly_smiling_face:

1 лайк

и вот это… ТС никому не верит. Вдруг за одну строку R таки изменился (ну а вдруг??) - проверим еще раз…

Творческий человек…

@Brito

Василий! Если вам надо выделить последнюю цифру десятичного числа - это делается так:

R = R %10;

И ВСЕ.
Ничего больше не надо. Действует на числа с любым числом разрядов.

Не пишите программ. Это не ваше.

2 лайка

Спасибо за простое решение. За совет тоже благодарю и сделаю так как считаю нужным.
Я полагаю что тут все родились кодерами…извините, мне немного не повезло, я только учусь
За свои много лет я привык к “добрым” советам от профессионалов и знаете, если бы не они и вы, то я бы никогда не горел желанием что либо изучать, делать, ломать и снова делать…
А вы продолжайте стебаться над чужими ошибками, всячески подкалывать…это ведь так вдохновляет

ПС Я коснулся этой темы 2 месяца назад и думаю некоторые ошибки или затупы вполне нормальное явление для меня

Всем спасибо

Пожалуйста.
Обратите внимание так же на две других полколки. Ваши условия сформулированы неверно и будут работать совсем не так, как вы думаете.

Например вот эта строка

полностью аналогична вот такой

if (R > 1) 

я уверен, что вы хотели написать совсем иное

Не всякий может быть программистом. Так же как не всякий может быть сварщиком. Или электриком. Можно чему-то научиться, чего-то нахвататься, но проку все равно не будет. У вас проблемы с логикой (это без стеба, просто констатация), а без логики в программировании никуда

2 лайка

Возможно, 2 месяца изучения языка С недостаточно. чтобы узнать как пользоваться операцией “%”. Однако за это время вполне можно было научиться задавать вопросы гуглю, а не писать фигню на форум.

Мы же не знаем, как именно ТС “учится”. Если учебник, то 2 месяца вполне достаточно. чтобы такую хрень не городить. Если что, лазанье по интернет-помойкам в поисках нужного куска кода не есть учеба. Так можно до морковкиного заговения учиться

3 лайка

думаю, мы этого уже не узнаем :slight_smile: