Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2012, 17:45   #1
Maincore
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 51
Злость последовательность присвоения значения переменным

Есть шесть переменных содержащих в себе только одно значение из двух либо ДА либо НЕТ. Назовем их var1,var2,var3,var4,var5,var6. Так же есть еще переменная в первой находиться числа от 1 до 6 назовем её 'Del'.

Пример первый (простой):
Если все шесть переменных содержат в себе значение Да то получаем число с переменой Del. К примеру значение её =2. Тогда в переменную Var2 присваиваем значение 1, Var3=2,Var4=3,Var5=4,Var6=5,Var1=6 . Как можно догадаться в 'Del' находиться число той переменой с которой начинается отчет.

А теперь сложнее:
если Var5 содержит значение НЕТ в 'Del'=4; тогда будет так Var4=1;Var6=2;
Var1=3;Var2=4;Var3=5; те var5 не присваиваем значение и сдвигаем присваивание значений переменным.

Вопрос;
Если сразу в 2 переменных будет значение нет, то как узнать последовательность присваивания значений?
А так же если 3 переменые = нет, 4 переменые = нет и 5 переменые = нет
Maincore вне форума Ответить с цитированием
Старый 05.02.2012, 18:43   #2
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

..есть байт, который состоит из 6 бит(111011), есть переменная, в которой хранится номер инвертированного элемента(000100)
если сразу в 2х битах будет стоять 0 - 101011
то в переменной DEL можно увидеть следующее
del = not 101011 -> 010100 (2й и 4й биты)

как то-так
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 06.02.2012, 13:10   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Краткая формулировка задачи в моем понимании
Пронумеровать те позиции для которых значение ДА начиная с указанной (Del) позиции.

Правильно?
Если да, то читать далее.


Описание алгоритма решения

счетчик =1
начинаем присвоения с указанной в Del
и пропускаем те переменные для которых значение =нет.
Увеличение счетчика только при присвоении

Набросок решения
вместо 6 переменных массив
Код:
num:=1; // счетчик
for j:=0+Del to 5+Del do begin  // начинаем с индекса del
  if var[j mod 6] then begin // закольцование массива 
       val[j mod 6]:=num;
       num:=num+1; // при удаче увеличиваем счетчик
  end;
P.S. если критично 6 переменных, не массив
Код:
case j mod 6 of
0: if var1 then begin var1:=num; num:=num+1; end;
1: if var2 ....
...
5: if var6 ....
end;
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
последовательность чисел - поиск максимума, второго после максимума значения, количество чисел равных максимуму wasy96 Паскаль, Turbo Pascal, PascalABC.NET 1 28.09.2011 01:19
Найти позицию кратчайшей последовательность в списке A в котором встречаются все значения из списка B. xaoc2 Свободное общение 1 12.06.2011 23:26
Вопрос по переменным ronston Общие вопросы C/C++ 6 06.10.2010 10:27
присвоить из бд переменным akimov_aleks БД в Delphi 6 07.04.2010 08:24
Доступ к переменным RealSHELS Общие вопросы Delphi 4 15.06.2008 13:14