Почему не работает такой простой кусочек кода???

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Вымогатель припоя
Аватара пользователя
Сообщения: 568
Зарегистрирован: Вт мар 04, 2008 20:03:03
Откуда: Нижний Новгород

Сообщение megasvintus »

На сайте код отображается некорректно. Смотрите приложенное изображение к посту 3



Это функция заполнения массива для отображения цифр, я попытался усовершенствовать ее чтобы лишние нули отсекались сразу, for (i=2;i>=0;i--) это начинаем с крайнего правого элемента массива
if ((i!=2)&&(ind_temp==0)) если разряд не крайний справа, и индицируемое число равно нулю, то вписываем в массив код пустого места 10

если это не так, то отображаем то что есть

Почему-то этот кусок кода во все элементы массива digit_out для отображения вписываает пустые места digit_out=10
Я делал по-другому-все прекрасно пашет. Захотел рациональнее, и уже второй день непонятно почему это не работает

В чем я ошибся?
Последний раз редактировалось megasvintus Ср июл 16, 2008 13:54:46, всего редактировалось 3 раза.
Трудно быть деревянным, совсем трудно....
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 173
Зарегистрирован: Чт мар 20, 2008 20:33:43

Сообщение delay »

В чем пишите?
if((indication <999>=-999)) такая запись допустима?
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 568
Зарегистрирован: Вт мар 04, 2008 20:03:03
Откуда: Нижний Новгород

Сообщение megasvintus »

В CVAVR. это допустимо и работает. если число более 999 и менее -999 то сразу исполняются строчки, отображающие Err. тут все в порядке. На вышеуказанный участо кода компиллятор не ругается вообще. ни warning ни errors


Это баг сайта. я вставляю вот какой текст:
Вложения
Безимени-1.gif
(14.97 КБ) 520 скачиваний
Последний раз редактировалось megasvintus Ср июл 16, 2008 13:47:40, всего редактировалось 1 раз.
Трудно быть деревянным, совсем трудно....
Встал на лапы
Аватара пользователя
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков

Сообщение Shapa »

Если я всё верно понял, вы пишите в Сях. Посему любой код очень легко можно проверить, подправте его чуть-чуть и запихните Visual Studio(или Borlan C). И в режиме дебага вы сможите найти ответ на любой вопрос(конечно если в вашей программной среде присутствует собственный дебагер, что вас останавливает? :)) )
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 568
Зарегистрирован: Вт мар 04, 2008 20:03:03
Откуда: Нижний Новгород

Сообщение megasvintus »

Расскажите пожалуйста что я не так написал, а не отправляйте в дебаггер. Для того я сюда и пришел.

Я новичок. Вот и спрашиваю почему он во все элементы массива рисует пустшки. Не исполняет этот участок:

else {
digit_out= ind_temp%10; // находим остаток
ind_temp/=10; //делим на 1
};
Трудно быть деревянным, совсем трудно....
Реклама
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

Он вообще не заходит в этот участок кода, или просто неверно его исполняет? Можно это проверить как-то? Воткнуть в этот участок вывод куда-нибудь чего-нибудь например?
Знание - сила!
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

поглядите же на мой вариант вывода чисел: я приводил в своей статье исходники, которые и пустое место вместо левых нулей делают, и тому подобное... заодно сравните со своей методой...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 568
Зарегистрирован: Вт мар 04, 2008 20:03:03
Откуда: Нижний Новгород

Сообщение megasvintus »

Всё! Сделал. Работает. гасит ненужные нули, отображает где нужно минусы. Получилось даже проще и короче чем ваш вариант! Но в моем конечно же процентов 80 вашего :)) Спасибо!
Трудно быть деревянным, совсем трудно....
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

И в чем же был косяк?
Знание - сила!
Вымогатель припоя
Аватара пользователя
Сообщения: 568
Зарегистрирован: Вт мар 04, 2008 20:03:03
Откуда: Нижний Новгород

Сообщение megasvintus »

А фиг знает... этот кусок кода достал до такой степени, что сделал так:
ctrl+a затем del

Написал заново, с учетом новых мыслей.

Слепо копировать чужое не хочу. Нужно понимать каждый символ.
Многие моменты конечно подглядываю, но потихоньку всё больше пишу сам
Трудно быть деревянным, совсем трудно....
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 173
Зарегистрирован: Чт мар 20, 2008 20:33:43

Сообщение delay »

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

Сообщение ARV »

megasvintus писал(а):Но в моем конечно же процентов 80 вашего...
....Слепо копировать чужое не хочу. Нужно понимать каждый символ.
Многие моменты конечно подглядываю, но потихоньку всё больше пишу сам
100% правильный подход в обучении! так и продолжайте, и постепенно ваши 20% станут восемьюдесятью для других :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

ARV писал(а):так и продолжайте, и постепенно ваши 20% станут восемьюдесятью для других :)
Это произойдет значительно быстрее, если не нажимать [Ctrl-A] + [Del], не разобравшись, в чем ошибка. :)

У меня этот код заработал. Правда, когда я его набирал, я совершенно машинально ввел одну лишнюю строку... :lol: - строку, в которой инициализируется переменная ind_temp:

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

        ind_temp = indication;

        for (i=2; i >= 0; i--)
        {
            if ( (i != 2)&&(ind_temp == 0) ){
                    ...
Полностью рабочий код, хотя и неоптимальный - согласен.
Пара советов - не пренебрегай отступами, используй префиксный, а не постфиксный инкремент/декремент, если не используешь то значение, которое имеется до операции - некоторые компиляторы генерят лишний код, если видят такое - думают, что нужны оба значения - и то, что ДО, и то, что ПОСЛЕ.
Друг Кота
Аватара пользователя
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

megasvintus писал(а):Расскажите пожалуйста что я не так написал, а не отправляйте в дебаггер...
Дык, дебаггер для того и придуман, чтобы решать подобные проблемы. Прицепите к CVAVR в качестве дебаггера AVR Studio, и будет Вам счастье. Получите массу удовольствий вроде пошаговой отладки и просмотра переменных по ходу дела...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»