Доброго времени суток! Помогите правильно сделать функцию деления с остатком в CodeVision AVR, и чтобы результат вывести на ЖКИ функцией lcd_putchar Моя задача, числа 1200 : 47 = 25.531 , с целым числом проблем нет , а вот остаток никак "не соответствует" математике. Проект с протеусом приложил в архиве... Вот моя попытка сделать вычисление таким способом
Вам нужно выводить именно это число? Почему бы просто его не выводить? Или вместо 1200 и 47 будут переменные? Предполагаю что под "остатком" вы имели ввиду дробную часть...
Вам нужно выводить именно это число? Почему бы просто его не выводить? Или вместо 1200 и 47 будут переменные? Предполагаю что под "остатком" вы имели ввиду дробную часть...
Это я для простоты обьяснения. Да вместо 1200 и 47 будут переменные.
Возможно словами мои пояснения не очень, а мой вариант кода вообще ни в красную армию.... и всё же , на калькуляторе 1200 : 47 это = 25.531. А в моем коде это 1200 : 47 = 25.025 ????
Огромное спасибо, с вашей помощью решено, освежил что дробная что остаток. a_skr ваш конкретный пример , это то что я и спрашивал, спасибо. Теперь мой код в любом виде отображает то что мне и требуется.
Я рад конечно что получилось )) На sprintf памяти не хватает?) Получше бы выглядело ) Либо сделайте какой-то свой аналог и вынесите в отдельную функцию в которую будете передавать указатель на строку и ваше число, а потом выводить lcd_puts()
А если для printf-овской компании мало места, то я бы порекомендовал взять за основу itoa, только заполнял бы буфер заведомо достаточного размера с конца и не ставил бы reverse в конце подпрограммы. Перед преобразованием заполнить буфер пробелами, функция преобразования остановится, когда будет 0 и начало останется пробелами. Эта функция может возвращать индеск буфера, который она заполнила последним, это будет первый знак числа. Если нужно выводить без фиксированной ширині поля, то начинать с этого индекса. После чего при выводе целого числа уже всё в порядке, а при выводе числа с фикс. точкой нужно отсчитать от конца буфера заданное число символов (три для данного примера) и в предыдущий символ вставить точку, а все перед ним сдвинуть ближе к началу буфера. Получится довольно компактно и универсально.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения