алгоритм установки значения разряда числа в меню
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18592
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: алгоритм установки значения разряда числа в меню
вообще-то, я имел ввиду, что лучше всего работать с символами строки, а не числами...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: алгоритм установки значения разряда числа в меню
Побуду экстрасенсом и предскажу следующий вопрос. При прибавке/вычитании значений каждого разряда, будет происходить переполнение. Придётся проверять ещё на это переполнение, выдирая это число из разряда.
Как вариант. Разложить строку и редактировать именно её. А потом её обратно упаковать в переменную. Будет очень удобно сравнивать значение разряда с числами, через ASCII-код.
ЗЫ: Блин, как всегда - опоздал
Надо себя приучить подписываться на темы. А то висит она открытая, думаешь что ответить, отвечаешь - а там уже куча постов 
Как вариант. Разложить строку и редактировать именно её. А потом её обратно упаковать в переменную. Будет очень удобно сравнивать значение разряда с числами, через ASCII-код.
ЗЫ: Блин, как всегда - опоздал
- kolobokus
- Встал на лапы
- Сообщения: 116
- Зарегистрирован: Пн дек 29, 2014 19:51:49
- Откуда: Санкт-Петербург
Re: алгоритм установки значения разряда числа в меню
Спасибо ARV за мысль. Буду ее думать... Пока я совсем не силен в преобразованиях, только sprintf освоил.
А здесь, в Вашем совете, какие функции надо использовать?
А здесь, в Вашем совете, какие функции надо использовать?
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Кажется, это то, что было перед фотоникой!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: алгоритм установки значения разряда числа в меню
Если с целыми, то itoa и atoi.
- kolobokus
- Встал на лапы
- Сообщения: 116
- Зарегистрирован: Пн дек 29, 2014 19:51:49
- Откуда: Санкт-Петербург
Re: алгоритм установки значения разряда числа в меню
ok
все на сегодня, мой кот уже мне пример подает... Всем спасибо!
все на сегодня, мой кот уже мне пример подает... Всем спасибо!
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Кажется, это то, что было перед фотоникой!
- Реклама
- kolobokus
- Встал на лапы
- Сообщения: 116
- Зарегистрирован: Пн дек 29, 2014 19:51:49
- Откуда: Санкт-Петербург
Re: алгоритм установки значения разряда числа в меню
С числами разобрался, все получилось, но... громоздко и несуразно. Причину хорошо раскрыл уважаемый ARV и другие мастера кода.
Теперь пробую работать со строкой.
Непонятно, как строку разложить на символы, чтобы работать с разрядами (то есть с отдельными символами)
Вот, например, имеется char stroka[6] = "12345". Мне нужно менять, например, пятый символ с 0 по 9.
stroka[5]=int num, где num число от 48 до 57? Я правильно понял?
Теперь пробую работать со строкой.
Непонятно, как строку разложить на символы, чтобы работать с разрядами (то есть с отдельными символами)
Вот, например, имеется char stroka[6] = "12345". Мне нужно менять, например, пятый символ с 0 по 9.
stroka[5]=int num, где num число от 48 до 57? Я правильно понял?
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Кажется, это то, что было перед фотоникой!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: алгоритм установки значения разряда числа в меню
Всё очень просто. Строка - это же массив символов. А если это массив, значит к каждому элементу можно обратиться по-отдельности через индекс в квадратных скобках ( [] ).как строку разложить на символы, чтобы работать с разрядами (то есть с отдельными символами)
- kolobokus
- Встал на лапы
- Сообщения: 116
- Зарегистрирован: Пн дек 29, 2014 19:51:49
- Откуда: Санкт-Петербург
Re: алгоритм установки значения разряда числа в меню
ок. Спасибо.
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Кажется, это то, что было перед фотоникой!
- kolobokus
- Встал на лапы
- Сообщения: 116
- Зарегистрирован: Пн дек 29, 2014 19:51:49
- Откуда: Санкт-Петербург
Re: алгоритм установки значения разряда числа в меню
Столкнулся с еще одной проблемой. При выводе на экран символа командой 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
Например:
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: алгоритм установки значения разряда числа в меню
Ничего не сделаешь. курсор аппаратно в дисплее сдвигается.
А чем не нравиться его устанавливать обратно ? Не вижу никаких "проблем"
А чем не нравиться его устанавливать обратно ? Не вижу никаких "проблем"
- kolobokus
- Встал на лапы
- Сообщения: 116
- Зарегистрирован: Пн дек 29, 2014 19:51:49
- Откуда: Санкт-Петербург
Re: алгоритм установки значения разряда числа в меню
Я не знал, что аппаратно. Не хотелось лишний раз заставлять мк дрыгать ножками, если было бы можно. Но раз так, буду возвращать принудительно. Спасибо за разъяснение.
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Кажется, это то, что было перед фотоникой!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18592
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: алгоритм установки значения разряда числа в меню
вообще говоря, редактирование строки на ЖКИ с 16 символами - довольно тягомотная задача, если рассматривать ее в общем случае. нужно учитывать скроллинг строки, если она не влезает целиком на дисплей... для редактирования чисел надо контролировать значения по ходу ввода, чтобы не получилось, например, ввести 93 часа 
но если изначально ограничить требования каким-то минимумом, то получается все довольно неплохо. если интересно - посмотрите мои исходники к проекту СПМТ2 - там, конечно, непросто, т.к. есть много ненужных вам наворотов (типа предотвращения ввода недопустимого синтаксисом символа на основе анализа предыдущих введенных символов), но если за основу взять функцию редактирования 2-разрядных десятичных чисел (файл editor.c функция edit_dec99) - должно подойти.
но если изначально ограничить требования каким-то минимумом, то получается все довольно неплохо. если интересно - посмотрите мои исходники к проекту СПМТ2 - там, конечно, непросто, т.к. есть много ненужных вам наворотов (типа предотвращения ввода недопустимого синтаксисом символа на основе анализа предыдущих введенных символов), но если за основу взять функцию редактирования 2-разрядных десятичных чисел (файл editor.c функция edit_dec99) - должно подойти.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- kolobokus
- Встал на лапы
- Сообщения: 116
- Зарегистрирован: Пн дек 29, 2014 19:51:49
- Откуда: Санкт-Петербург
Re: алгоритм установки значения разряда числа в меню
Спасибо, ARV, за материал для раздумья. Однако, мне пока не по зубам такой код.
Однако, я самостоятельно реализовал оба варианта модификации параметров в меню с их одновременным отображением на экране(через веса разрядов чисел и через поразрядную обработку строки). Остановился на втором варианте. Конечно, он кажется разумней, хотя и в нем есть отдельные трудности для меня.
Долго возился с процедурой очищения строки от не цифровых символов, чтобы можно было воспользоваться функцией
int atoi(char *str).
Не придумал ничего короче, чем просто поразрядная адресная перезапись из одного массива строки в другой - чисто цифровой.
Как можно сделать иначе, чтобы перевести в int строчку типа 34.45? (точка только на экране, на самом деле число int)
Однако, я самостоятельно реализовал оба варианта модификации параметров в меню с их одновременным отображением на экране(через веса разрядов чисел и через поразрядную обработку строки). Остановился на втором варианте. Конечно, он кажется разумней, хотя и в нем есть отдельные трудности для меня.
Долго возился с процедурой очищения строки от не цифровых символов, чтобы можно было воспользоваться функцией
int atoi(char *str).
Не придумал ничего короче, чем просто поразрядная адресная перезапись из одного массива строки в другой - чисто цифровой.
Как можно сделать иначе, чтобы перевести в int строчку типа 34.45? (точка только на экране, на самом деле число int)
Что такое электроника?
Кажется, это то, что было перед фотоникой!
Кажется, это то, что было перед фотоникой!
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: алгоритм установки значения разряда числа в меню
.. есть такая ф-ция isdigit(), которую и руками написать не долгоkolobokus писал(а):Долго возился с процедурой очищения строки от не цифровых символов, чтобы можно было воспользоваться функцией int atoi(char *str)
Код: Выделить всё
char isdigit(char ch){
if(ch>='0' && ch<='9') return 1;
return 0;
}..например такkolobokus писал(а): Как можно сделать иначе, чтобы перевести в int строчку типа 34.45?


