алгоритм установки значения разряда числа в меню

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18592
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: алгоритм установки значения разряда числа в меню

Сообщение ARV »

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

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: алгоритм установки значения разряда числа в меню

Сообщение Аlex »

Побуду экстрасенсом и предскажу следующий вопрос. При прибавке/вычитании значений каждого разряда, будет происходить переполнение. Придётся проверять ещё на это переполнение, выдирая это число из разряда.
Как вариант. Разложить строку и редактировать именно её. А потом её обратно упаковать в переменную. Будет очень удобно сравнивать значение разряда с числами, через ASCII-код.

ЗЫ: Блин, как всегда - опоздал :))) Надо себя приучить подписываться на темы. А то висит она открытая, думаешь что ответить, отвечаешь - а там уже куча постов :)
Реклама
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Re: алгоритм установки значения разряда числа в меню

Сообщение kolobokus »

Спасибо ARV за мысль. Буду ее думать... Пока я совсем не силен в преобразованиях, только sprintf освоил.
А здесь, в Вашем совете, какие функции надо использовать?
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: алгоритм установки значения разряда числа в меню

Сообщение Аlex »

Если с целыми, то itoa и atoi.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Re: алгоритм установки значения разряда числа в меню

Сообщение kolobokus »

ok
все на сегодня, мой кот уже мне пример подает... Всем спасибо!
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Реклама
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Re: алгоритм установки значения разряда числа в меню

Сообщение kolobokus »

С числами разобрался, все получилось, но... громоздко и несуразно. Причину хорошо раскрыл уважаемый ARV и другие мастера кода.
Теперь пробую работать со строкой.
Непонятно, как строку разложить на символы, чтобы работать с разрядами (то есть с отдельными символами)
Вот, например, имеется char stroka[6] = "12345". Мне нужно менять, например, пятый символ с 0 по 9.
stroka[5]=int num, где num число от 48 до 57? Я правильно понял?
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: алгоритм установки значения разряда числа в меню

Сообщение Аlex »

как строку разложить на символы, чтобы работать с разрядами (то есть с отдельными символами)
Всё очень просто. Строка - это же массив символов. А если это массив, значит к каждому элементу можно обратиться по-отдельности через индекс в квадратных скобках ( [] ).
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Re: алгоритм установки значения разряда числа в меню

Сообщение kolobokus »

ок. Спасибо.
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Re: алгоритм установки значения разряда числа в меню

Сообщение kolobokus »

Столкнулся с еще одной проблемой. При выводе на экран символа командой puts() автоматически сдвигается на следующую позицию включенный курсор.
Например:
lcd_gotoxy(11,0);
_lcd_write_data(0x0e);
lcd_puts("A");
// курсор передвигается на позицию (12,0)

Что сделать, чтобы курсор оставался на месте, не вводя повторно lcd_gotoxy(11,0); ?
Использую библиотеку alcd.h компилятор CodeVisionAVR v.2.5.3.0 LCD1602
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: алгоритм установки значения разряда числа в меню

Сообщение Аlex »

Ничего не сделаешь. курсор аппаратно в дисплее сдвигается.
А чем не нравиться его устанавливать обратно ? Не вижу никаких "проблем" :dont_know:
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Re: алгоритм установки значения разряда числа в меню

Сообщение kolobokus »

Я не знал, что аппаратно. Не хотелось лишний раз заставлять мк дрыгать ножками, если было бы можно. Но раз так, буду возвращать принудительно. Спасибо за разъяснение.
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18592
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: алгоритм установки значения разряда числа в меню

Сообщение ARV »

вообще говоря, редактирование строки на ЖКИ с 16 символами - довольно тягомотная задача, если рассматривать ее в общем случае. нужно учитывать скроллинг строки, если она не влезает целиком на дисплей... для редактирования чисел надо контролировать значения по ходу ввода, чтобы не получилось, например, ввести 93 часа :)

но если изначально ограничить требования каким-то минимумом, то получается все довольно неплохо. если интересно - посмотрите мои исходники к проекту СПМТ2 - там, конечно, непросто, т.к. есть много ненужных вам наворотов (типа предотвращения ввода недопустимого синтаксисом символа на основе анализа предыдущих введенных символов), но если за основу взять функцию редактирования 2-разрядных десятичных чисел (файл editor.c функция edit_dec99) - должно подойти.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Re: алгоритм установки значения разряда числа в меню

Сообщение kolobokus »

Спасибо, ARV, за материал для раздумья. Однако, мне пока не по зубам такой код.
Однако, я самостоятельно реализовал оба варианта модификации параметров в меню с их одновременным отображением на экране(через веса разрядов чисел и через поразрядную обработку строки). Остановился на втором варианте. Конечно, он кажется разумней, хотя и в нем есть отдельные трудности для меня.
Долго возился с процедурой очищения строки от не цифровых символов, чтобы можно было воспользоваться функцией
int atoi(char *str).
Не придумал ничего короче, чем просто поразрядная адресная перезапись из одного массива строки в другой - чисто цифровой.
Как можно сделать иначе, чтобы перевести в int строчку типа 34.45? (точка только на экране, на самом деле число int)
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: алгоритм установки значения разряда числа в меню

Сообщение ChipKiller »

kolobokus писал(а):Долго возился с процедурой очищения строки от не цифровых символов, чтобы можно было воспользоваться функцией int atoi(char *str)
.. есть такая ф-ция isdigit(), которую и руками написать не долго

Код: Выделить всё

char isdigit(char ch){
 if(ch>='0' && ch<='9') return 1;
return 0;
}
kolobokus писал(а): Как можно сделать иначе, чтобы перевести в int строчку типа 34.45?
..например так
Ответить

Вернуться в «Разные вопросы по МК»