И снова о GOTO. Метки из массива.
- Войдите на сайт для отправки комментариев
Ср, 16/12/2020 - 00:14
Всем привет.
Делаю табло на адресных светодиодах и кнопках. Каждая кнопка посылает свою цифру, которую программа должна прибавить к сумме и вывести на табло. Для вывода каждой цифры есть группа операторов в функции, на эту часть функции есть метки (а, b, c и т.д.). Эти метки лежат в массиве. Параметр функции говорит ей какую цифру надо выводить. Короче, примерно так:
char number_for_out[] = {'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}; //ЕДИНИЦЫ void out_number(int z = 1) { if (z < 10) { goto *number_for_out[z]; } a: for (int i = 0; i < 2; i++ ) { // вывод "1" strip.setPixelColor(seg[1][i], 0xff0000); strip.setPixelColor(seg[2][i], 0xff0000); strip.show(); // отправить на ленту delay(100); } { return; } b: for (int i = 0; i < 2; i++ ) { // вывод "2" strip.setPixelColor(seg[6][i], 0xff0000); strip.setPixelColor(seg[1][i], 0xff0000); strip.setPixelColor(seg[7][i], 0xff0000); strip.setPixelColor(seg[4][i], 0xff0000); strip.setPixelColor(seg[3][i], 0xff0000); strip.show(); delay(100); }{ return; }
и т.д.
Но это не работает. Скажите, рабочая ли такая конструкция? Я вызываю out_number(1), и мечтаю, что goto увидит 2 ячейку массива с меткой "а" и пошлёт на неё.
void out_number(int z = 1) { if (z < 10) { goto *number_for_out[z]; }
Если что, я - чайник. Но не тупой (очень надеюсь).
интересно. а что у вас выражает эта строчка
почему в заголовке функции z =1 ?
Что касается ваших меток - почитайте про оператор switch - это именно то, что вы хотите
Это со значением по умолчанию. Не помню что хотел, если честно. Про switch гляну, спасибо.
А вообще, мой способ рабочий? После доработки, естесснно. Думаю что-то с типом данных. Не совпадает char из массива с типом меток.
А вообще, мой способ рабочий? После доработки, естесснно. Думаю что-то с типом данных. Не совпадает char из массива с типом меток.
А зачем? Трусы можно и через голову надевать, только нужно ли? ))
swith - самое то, что вам нужно
А вообще, мой способ рабочий? После доработки, естесснно. Думаю что-то с типом данных. Не совпадает char из массива с типом меток.
нет, не рабочий
А вообще, мой способ рабочий? После доработки, естесснно.
Ваш способ - нерабочий. А что будет после доработки, никто кроме Вас не знает.
Думаю что-то с типом данных. Не совпадает char из массива с типом меток.
Конечно: a и 'a' - это разные вещи.
Вот так работает, запускайте. Тока ... говнокод же ж! Если что, то вот в этой теме есть ещё пример и кое-какие пояснения.
Значит есть вариант таки. Спасибо большое. Запомню.
Я в курсе, что goto - нехороший вариант. Но чисто для эрудиции...