![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
ninja |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Добрый день!
Столкнулся с такой проблемой: необходимо таблицу stringgrid заполнить значениями '1' и '0' по такому принцыпу для 2х столбцов: Код 00 01 10 11 для 3х столбцов Код 000 001 010 011 100 101 110 111 Причем количество столбцов может быть любым например 10, и заполнение таблицы происходит по такому принцыпу. Помогите разобраться. Первые 2 строчки заполнил обычным циклом, для остальных делал следующее: Пробывал сначала бежать по каждой строчке и если встречается '1' то смотреть что после нее, если '0' , то в следующую записывалась '1' если после '1' всречалась снова '1' то '1' записывалась после текущей позиции.
Затем пробывал бежать по каждому столбцу т.е. если последний столбец, то заполняется так 0,1,0,1,0,1...... предпоследний так 00,11,00,11,00........ и т.д. Тут столкнулся с проблемой как реализовать такой цикл.
P.S. Заранее благодарен за помощь |
![]() ![]() |
TarasBer |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
inttostr(1) - в цитатник
Я бы добавил к решению Вольво то, что в данном случает логичнее вместо div 2 писать shr 1 (это не только быстрее, это действительно логичнее - ведь нам нужно двоичное разложение числа), а вместо StringGrid1.Cells[myCol - 1, X] := IntToStr(T mod 2); логичнее if odd(t) then StringGrid1.Cells[myCol - 1, X] := '1' else StringGrid1.Cells[myCol - 1, X] := '0'; -------------------- |
andriano |
![]()
Сообщение
#3
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Не согласен по обоим пунктам.
inttostr(1) - в цитатник Я бы добавил к решению Вольво то, что в данном случает логичнее вместо div 2 писать shr 1 (это не только быстрее, это действительно логичнее - ведь нам нужно двоичное разложение числа), Но аппаратная зависимость, которая в данном случае налицо, здесь совершенно не нужна. Цитата а вместо StringGrid1.Cells[myCol - 1, X] := IntToStr(T mod 2); логичнее if odd(t) then StringGrid1.Cells[myCol - 1, X] := '1' else StringGrid1.Cells[myCol - 1, X] := '0'; Что будет быстрее выполняться - также сказать трудно. Зато исходный вариант короче в записи и, на мой взгляд, нагляднее. |
![]() ![]() |
![]() |
Текстовая версия | 9.07.2025 3:34 |