Форум программистов, компьютерный форум CyberForum.ru

Как сохранить предыдущее значение переменной? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
07.04.2011, 21:06     Как сохранить предыдущее значение переменной? #1
Прошу подсказать как реализовать такой алгоритм
Есть переменная В и есть переменная А. Они хранят числа от 00 до FF.
Хранить должны так
В принимает текущее значение,
А хранит предыдущее.
Если значение не изменилось, то ничего не меняется.
Какие будут соображения?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2011, 21:06     Как сохранить предыдущее значение переменной?
Посмотрите здесь:

C++ Как в адрес переменной ввести значение
как присвоить переменной char значение слова ? C++
C++ Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С
Как положительной переменной присвоить отрицательное значение? C++
Как присвоить переменной Double значение NaN? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
07.04.2011, 22:08     Как сохранить предыдущее значение переменной? #2
попробуй сделать массив, и настроить указатели на настоящий элемент и на преыдущий
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
07.04.2011, 22:13     Как сохранить предыдущее значение переменной? #3
Какие будут соображения?
вот это мы должны у вас спросить, и если что подтолкнуть
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
07.04.2011, 23:04  [ТС]     Как сохранить предыдущее значение переменной? #4
Цитата Сообщение от White Luna Посмотреть сообщение
попробуй сделать массив, и настроить указатели на настоящий элемент и на преыдущий
Идея понятна. Мне не ясно как сохранить предыдущий результат , что бы его не переписывали вновь пришедшие данные.
Вот в принципе что надо.
Допустим 2 переменные B и A
Переменная В в нее постоянно поступают данные. Скажем числа от 00 до FF
Предположим поступило FF и В приняло это значение.
Далее поступило AA - В приняло значение AA, а вот пременная A приняла предыдущее значение FF.
Мне казалось что надо одновременно присвоить значение обоим переменным а потом по какому то условию их обновлять, думаю что есть какой то стандартный алгорим типа организации цикла. Но ...
Не хватает опыта как это сделать. Каким то образом заполнять массив?, но он заполнится, а обнулять его нельзя т.к. поток данных прерыватся не должен, короче как то хожу по кругу.

Добавлено через 4 минуты
Цитата Сообщение от DeadRipper Посмотреть сообщение
вот это мы должны у вас спросить, и если что подтолкнуть
И не лень Вам. Я же просто попросил помочь, т.к. своих идей нет.
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
07.04.2011, 23:11     Как сохранить предыдущее значение переменной? #5
ну вот допустим пришло FF

сохраняем то что было в b в a

C++
1
a=b
ставим новое значение в b

C++
1
b=0xff
если зациклить то в a всегда будут предыдущие значения

первая итерация

C++
1
2
a=b
b=0xff
на выходе у нас a=0, b=0xff

вторая итерация

C++
1
2
a=b
b=0xAA
на выходе у нас a=0xff, b=0xaa
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
07.04.2011, 23:16  [ТС]     Как сохранить предыдущее значение переменной? #6
Цитата Сообщение от DeadRipper Посмотреть сообщение
ну вот допустим пришло FF

сохраняем то что было в b в a

C++
1
a=b
ставим новое значение в b

C++
1
b=0xff
если зациклить то в a всегда будут предыдущие значения
Зациклить это интересно, попробую что то сделать. А каким должно быть условие выхода из цикла? Ведь если данные совпадут, например придут значения одинаковые. Я из этого цикла не выйду никогда. Или я чего то не понимаю.
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
07.04.2011, 23:20     Как сохранить предыдущее значение переменной? #7
а каким образом приходят данные?
это отдельный поток?
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
07.04.2011, 23:57  [ТС]     Как сохранить предыдущее значение переменной? #8
Цитата Сообщение от DeadRipper Посмотреть сообщение
а каким образом приходят данные?
это отдельный поток?
Считываются с ноги микроконтроллера в переменную. 1 байт на одно число. И дело в том, что на эту ногу приходят и команды считывания. И без этого шага считываюся сами команды, а не состояние устройства. Вот я и уткнулся. Сперва в какие то условия, но Вы подсказали дельную вещь - последовательно выполнять команды как в Бейсике. Короче пока пробую. Спасибо.

Добавлено через 25 минут
Нет не работает, мне нужно еще подумать. Т.е присвоение предыдущего значения происходит но... вылезла другая проблема. Приходят данные , попадают в В. В А хранится предыдущее значение. Все ок. Приходит команда считывания состояния и попадает в B ( т.е. ее значение ) а в ответ посылаетеся предыдущее значение состояния хранящееся в А . Тоже все ок, но приходит опять команда на считывание и считывает предыдущую команду считывания, а должна состояния. Так что нужна проверка , я так думаю, что если идет цепочка одинаковых данных, то А менятся не должна. Так что пока до завтра. Спасибо за поддержку.
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
08.04.2011, 00:10     Как сохранить предыдущее значение переменной? #9
есть такой вариант,создать переменную c, следящую за изменениями в б


C++
1
2
3
4
5
6
if(b!=c)
{
а=b
b=...
c=b
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
08.04.2011, 01:43     Как сохранить предыдущее значение переменной? #10
nsl, в *NIX системах можно так сделать: открывается на чтение файл устройства и с помощью select() или poll() периодически опрашивается на предмет доступных данных. Если они есть,
C
1
2
a = b;
read(fd, &b, sizeof(b));
хотя не понятен сам механизм прихода данных...
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
08.04.2011, 19:54  [ТС]     Как сохранить предыдущее значение переменной? #11
Цитата Сообщение от DeadRipper Посмотреть сообщение
есть такой вариант,создать переменную c, следящую за изменениями в б


C++
1
2
3
4
5
6
if(b!=c)
{
а=b
b=...
c=b
}
Вот! Похоже что именно то что надо. К обеду буду знать результаты, заработает ли устройство. Именно, чем то надо отслеживать. В данном случае переменная и условие. Должно, просто обязано сработать.

Добавлено через 10 часов 2 минуты
Цитата Сообщение от DeadRipper Посмотреть сообщение
есть такой вариант,создать переменную c, следящую за изменениями в б


C++
1
2
3
4
5
6
if(b!=c)
{
а=b
b=...
c=b
}
Не работает - нужны начальные значения , а откуда их взять , что бы не нарушить конструкцию ума не приложу. Хоть ставь условием перебор команд что ли.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
08.04.2011, 20:47     Как сохранить предыдущее значение переменной? #12
nsl, напишите подробнее, как в переменную b данные попадают.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2011, 14:41     Как сохранить предыдущее значение переменной?
Еще ссылки по теме:

Как вычленить значение переменной из цикла? C++
C++ Как сохранить значение?
C++ Как сохранить длину строки в переменной?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
09.04.2011, 14:41  [ТС]     Как сохранить предыдущее значение переменной? #13
Цитата Сообщение от easybudda Посмотреть сообщение
nsl, напишите подробнее, как в переменную b данные попадают.
Спасибо за поддержку. Но мой подход, отлова предыдущего значения неправилен. Так что все получается с отловом переменой, но устройство не работаеет из-за неправильного алгоритма разработанного мной. Т.ч. буду искать другой подход.
А данные поступают последовательно на ногу МК, считываются, поступают и команды и данные. Это эмулятор 1-wire устройства. Т.ч. буду анализировать состояние ног, и на этом строить дальнейший алгоритм.
Yandex
Объявления
09.04.2011, 14:41     Как сохранить предыдущее значение переменной?
Ответ Создать тему
Опции темы

Текущее время: 09:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru