Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
#1

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

07.04.2011, 21:06. Просмотров 3620. Ответов 12
Метки нет (Все метки)

Прошу подсказать как реализовать такой алгоритм
Есть переменная В и есть переменная А. Они хранят числа от 00 до FF.
Хранить должны так
В принимает текущее значение,
А хранит предыдущее.
Если значение не изменилось, то ничего не меняется.
Какие будут соображения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2011, 21:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сохранить предыдущее значение переменной? (C++):

Как сохранить длину строки в переменной? - C++
#include <iostream> using namespace std; int main() { int j,h,g; string rabota = "lab rabota 1!"; string...

Как сохранить float в переменной типа char? - C++
Всем здрасьте. Как можно записать float в char ? И как потом float вытащить из char, если он будет находится примерно посередине ну или...

Как сохранить значение? - C++
#include <iostream> using namespace std; int main() { string rabota = "lab"; string name; string family; ...

Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С - C++
Массив С действительных чисел имеет 5 строк и 11 столбцов. Присвоить значение наименьшего элемента массива переменной М1, номер строки, где...

Как вычленить значение переменной из цикла? - C++
Вводится текст. Программа показывает подтекст с элемента N до элемента M. N и M вводятся пользователем. Сначала работаю с начальным...

Как присвоить переменной значение pow? - C++
Здравствуйте! У меня есть число, которое нужно возвести в большую степень (например 7 в степень 132) и взять остаток который получится...

12
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
07.04.2011, 22:08 #2
попробуй сделать массив, и настроить указатели на настоящий элемент и на преыдущий
1
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
07.04.2011, 22:13 #3
Какие будут соображения?
вот это мы должны у вас спросить, и если что подтолкнуть
0
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 Посмотреть сообщение
вот это мы должны у вас спросить, и если что подтолкнуть
И не лень Вам. Я же просто попросил помочь, т.к. своих идей нет.
0
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
1
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 всегда будут предыдущие значения
Зациклить это интересно, попробую что то сделать. А каким должно быть условие выхода из цикла? Ведь если данные совпадут, например придут значения одинаковые. Я из этого цикла не выйду никогда. Или я чего то не понимаю.
0
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
07.04.2011, 23:20 #7
а каким образом приходят данные?
это отдельный поток?
0
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
07.04.2011, 23:57  [ТС] #8
Цитата Сообщение от DeadRipper Посмотреть сообщение
а каким образом приходят данные?
это отдельный поток?
Считываются с ноги микроконтроллера в переменную. 1 байт на одно число. И дело в том, что на эту ногу приходят и команды считывания. И без этого шага считываюся сами команды, а не состояние устройства. Вот я и уткнулся. Сперва в какие то условия, но Вы подсказали дельную вещь - последовательно выполнять команды как в Бейсике. Короче пока пробую. Спасибо.

Добавлено через 25 минут
Нет не работает, мне нужно еще подумать. Т.е присвоение предыдущего значения происходит но... вылезла другая проблема. Приходят данные , попадают в В. В А хранится предыдущее значение. Все ок. Приходит команда считывания состояния и попадает в B ( т.е. ее значение ) а в ответ посылаетеся предыдущее значение состояния хранящееся в А . Тоже все ок, но приходит опять команда на считывание и считывает предыдущую команду считывания, а должна состояния. Так что нужна проверка , я так думаю, что если идет цепочка одинаковых данных, то А менятся не должна. Так что пока до завтра. Спасибо за поддержку.
0
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
}
1
easybudda
Модератор
Эксперт CЭксперт С++
9914 / 5837 / 975
Регистрация: 25.07.2009
Сообщений: 11,006
08.04.2011, 01:43 #10
nsl, в *NIX системах можно так сделать: открывается на чтение файл устройства и с помощью select() или poll() периодически опрашивается на предмет доступных данных. Если они есть,
C
1
2
a = b;
read(fd, &b, sizeof(b));
хотя не понятен сам механизм прихода данных...
0
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
}
Не работает - нужны начальные значения , а откуда их взять , что бы не нарушить конструкцию ума не приложу. Хоть ставь условием перебор команд что ли.
0
easybudda
Модератор
Эксперт CЭксперт С++
9914 / 5837 / 975
Регистрация: 25.07.2009
Сообщений: 11,006
08.04.2011, 20:47 #12
nsl, напишите подробнее, как в переменную b данные попадают.
0
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
09.04.2011, 14:41  [ТС] #13
Цитата Сообщение от easybudda Посмотреть сообщение
nsl, напишите подробнее, как в переменную b данные попадают.
Спасибо за поддержку. Но мой подход, отлова предыдущего значения неправилен. Так что все получается с отловом переменой, но устройство не работаеет из-за неправильного алгоритма разработанного мной. Т.ч. буду искать другой подход.
А данные поступают последовательно на ногу МК, считываются, поступают и команды и данные. Это эмулятор 1-wire устройства. Т.ч. буду анализировать состояние ног, и на этом строить дальнейший алгоритм.
0
09.04.2011, 14:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2011, 14:41
Привет! Вот еще темы с ответами:

Как в адрес переменной ввести значение - C++
Доброго времени суток! Проблема в том что переменная "ID" сама считается и вводиться, и как её заталкать я не знаю, до этого вводилось все...

Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение п - C++
Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение переменной.

Как присвоить такое значение переменной int - C++
есть две переменные типа int int x=2; int y=3; я хочу чтобы третья переменная Z(тоже тип int) имело значение 23, то есть...

Как присвоить переменной значение элемента структуры? - C++
Имеется вот такой код, заполнение структуры происходит из файла. Сама структура заполняется верно(через отладчик смотрел). Мне нужно по...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru