Технический форум по робототехнике.
=DeaD= » 28 сен 2008, 18:14
Еще можно вот так: int16_u abc = 54173; char digit[6]; for(char c=0; c<6; c++){ digit[c]=abc%10; abc=abc/10; };Добавлено спустя 39 секунд: 2avr123: Да, для последней abc%10 достаточно.
Vooon » 28 сен 2008, 20:42
=DeaD= писал(а): int16_u abc = 54173; char digit[6]; for(char c=0; c<6; c++){ digit[c]=abc%10; abc=abc/10; };
s/int16_u/int16_t/
Doniak » 28 сен 2008, 21:52
Vooon и =DeaD= спасиба, а немоглибы немного разжувать как происходит "разложение"? п.с. В дальнейшем планирую получившиеся цыфры выводить на 7ми сегментные индикаторы.
avr123.nm.ru » 28 сен 2008, 21:58
Doniak писал(а): как происходит "разложение" ?
"
Си для микроконтроллера " - читайте и разбирайте что в строчках данного вам кода написано.
Начинайте учиться. http://avr123.nm.ru/05.htm
Doniak » 28 сен 2008, 22:18
avr123.nm.ru писал(а): Doniak писал(а): как происходит "разложение" ?
"
Си для микроконтроллера " - читайте и разбирайте что в строчках данного вам кода написано.
Начинайте учиться. http://avr123.nm.ru/05.htm мне всеравно непонятна вот эта строчка
s/int16_u/int16_t/
что это int16_u поиск в хелпе CVAVR нечево недал начяло переменной
blindman » 28 сен 2008, 22:28
Doniak писал(а): мне всеравно непонятна вот эта строчка s/int16_u/int16_t/
Это значит поменять int16_u на int16_t
Господа, давайте прежде чем советовать код - проверять как он выполняется, или хотя бы вдумчиво его перечитывать. Два примера и оба нерабочие. В одном - char, который в большинстве случаев по умолчанию 8 бит signed , и присваивается значение 173 - что в нем в итоге окажется? И что выведет этот код? В другом - несуществующий тип. И если менять его как советуется на int16_t - опять те же грабли (54173 не влазит в int16_t).
Vooon » 28 сен 2008, 22:38
Для CVAVR, как правило, стоит флаг char == unsigned char , его устанавливает мастер начального кода. А про инт правда ваша, для CV правильно s/int16_u/unsigned int/
Doniak » 28 сен 2008, 23:30
5 / 2 // даст 2 5 % 2 // даст 1 75 / 29 // даст 2 75 % 29 // даст 17
почему 75%29 даст 17 ведь остаток 586206897
Montoya » 28 сен 2008, 23:32
75 - 29 * 2 скок будет?
Doniak » 28 сен 2008, 23:46
опа понял как всё это работает, всем спасиба
Код: Выделить всё • Развернуть int16_u abc = 54173; char digit[6]; for(char c=0; c<6; c++){ digit[c]=abc%10; abc=abc/10; };
совет AVR123 дописать в курсе то что написал Montoya.
avr123.nm.ru » 29 сен 2008, 08:57
Doniak писал(а): совет AVR123 дописать в курсе то что написал Montoya.
Боюсь школьная арифметика в курс не влезет !
Doniak писал(а): почему 75%29 даст 17 ведь остаток 586206897
точнее 0.586206897 Вопрос: от чего ? Ответ: от 29
0.586206897 * 29 = 17
в ШКОЛЕ надо было учить деление СТОЛБИКОМ а не калькулятором и
понимать что такое число, что такое остаток от деления. Это не про Си и не про МК ! вАААААще !
=DeaD= » 29 сен 2008, 09:20
Doniak писал(а): почему 75%29 даст 17 ведь остаток 586206897
0.586206897 - это не остаток, это дробная часть от результата деления одного числа на другое.
Doniak » 29 сен 2008, 09:22
avr123.nm.ru писал(а): Doniak писал(а): совет AVR123 дописать в курсе то что написал Montoya.
Боюсь школьная арифметика в курс не влезет !
точнее 0.586206897 Вопрос: от чего ? Ответ: от 29
0.586206897 * 29 = 17
в ШКОЛЕ надо было учить деление СТОЛБИКОМ а не калькулятором и
понимать что такое число, что такое остаток от деления. Это не про Си и не про МК ! вАААААще ! я вот этого обяснения непонял, при чём тут твоя арифметика?
Код: Выделить всё • Развернуть x % y // вычислить остаток от деления нацело
мне Montoya дал пример я и посоветовал тебе вставить этот пример в твой курс(для большей наглядности)
avr123.nm.ru » 29 сен 2008, 09:42
0.586206897 - это и есть ОСТАТОК ! просто он выражен через делитель, т.е. делитель принят за единицу измерения остатка.
Doniak » 29 сен 2008, 09:56
x % y значит можно обьяснить так? // добуток залишка двох чисел на знаменник
поскольку формулировку:
// вычислить остаток от деления нацело
я понимаю как просто найти остаток