Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/92: Рейтинг темы: голосов - 92, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
1

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

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

Author24 — интернет-сервис помощи студентам
Прошу подсказать как реализовать такой алгоритм
Есть переменная В и есть переменная А. Они хранят числа от 00 до FF.
Хранить должны так
В принимает текущее значение,
А хранит предыдущее.
Если значение не изменилось, то ничего не меняется.
Какие будут соображения?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2011, 21:06
Ответы с готовыми решениями:

Как сохранить значение переменной?
Дана задачка: Известны данные о мощности двигателя(в л.с.) и стоимости 5-ти марок легковых...

Как сохранять предыдущее значение в с++ ?
К примеру у меня есть формула c = a * b * c. Переменной c присвоено начальное значение 10. При...

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

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

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

Добавлено через 25 минут
Нет не работает, мне нужно еще подумать. Т.е присвоение предыдущего значения происходит но... вылезла другая проблема. Приходят данные , попадают в В. В А хранится предыдущее значение. Все ок. Приходит команда считывания состояния и попадает в B ( т.е. ее значение ) а в ответ посылаетеся предыдущее значение состояния хранящееся в А . Тоже все ок, но приходит опять команда на считывание и считывает предыдущую команду считывания, а должна состояния. Так что нужна проверка , я так думаю, что если идет цепочка одинаковых данных, то А менятся не должна. Так что пока до завтра. Спасибо за поддержку.
0
65 / 71 / 9
Регистрация: 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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
08.04.2011, 01:43 10
nsl, в *NIX системах можно так сделать: открывается на чтение файл устройства и с помощью select() или poll() периодически опрашивается на предмет доступных данных. Если они есть,
C
1
2
a = b;
read(fd, &b, sizeof(b));
хотя не понятен сам механизм прихода данных...
0
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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
08.04.2011, 20:47 12
nsl, напишите подробнее, как в переменную b данные попадают.
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
09.04.2011, 14:41  [ТС] 13
Цитата Сообщение от easybudda Посмотреть сообщение
nsl, напишите подробнее, как в переменную b данные попадают.
Спасибо за поддержку. Но мой подход, отлова предыдущего значения неправилен. Так что все получается с отловом переменой, но устройство не работаеет из-за неправильного алгоритма разработанного мной. Т.ч. буду искать другой подход.
А данные поступают последовательно на ногу МК, считываются, поступают и команды и данные. Это эмулятор 1-wire устройства. Т.ч. буду анализировать состояние ног, и на этом строить дальнейший алгоритм.
0
09.04.2011, 14:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2011, 14:41
Помогаю со студенческими работами здесь

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

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

Как сохранить полученное значение в массиве
Мне просто нужно, чтобы выводилось не одно значение maxj, а все. Надо записать, наверно, maxj в...

Как ограничить значение переменной?
к примеру "На вход дается натурально число N, не превосходящее 10000000" как ограничить размер...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru