Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.04.2010, 23:57
Whisper Whisper вне форума
Прохожий
 
Регистрация: 05.04.2010
Сообщения: 3
Репутация: 10
По умолчанию Двумерный массив

Ребята, помогите пожалуйста, необходимо создать таблицу (min5x5) которая заполнялась бы 0 и 1 (с клавиатуры) и расширялась бы при изменении длины строки.Пример(по шагам):1)10100,010101 2)101000,010101
Ответить с цитированием
  #2  
Старый 06.04.2010, 00:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ничего не понятно. Давай по шагам.
Ты в строке ввода указываешь некоторую последовательность 0 и 1. Что там делает запятая? Разделяет строки? Т.е. ты указываешь массив в виде "строка1, строка2, строка3,..."? Тогда сначала бъем на строки, потом считаем макс. длинну строки и образмериваем динамический массив. Ну а уже запихать в него данные дело простое.
Ответить с цитированием
  #3  
Старый 06.04.2010, 00:15
Whisper Whisper вне форума
Прохожий
 
Регистрация: 05.04.2010
Сообщения: 3
Репутация: 10
По умолчанию

Я имел ввиду: вводим 1-ую строку 10100, затем 2-ую 010101 - при этом в 1-ой стоке в 6-ую позицию должен добавиться 0 и т.д.,т.е. все строки должны быть раны max? но с 0 в недостающих позициях.
Ответить с цитированием
  #4  
Старый 06.04.2010, 00:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну тоже легко. Это не меняет принципа.
только тогда проще вводить все в Memo сразу все строки, чем реализовывать такой метод ввода.
Вводим все в Memo. Потом вот таким кодом "добиваем" нулями:

Код:
var
  I : Integer;
  MaxLen : Integer;
begin
  MaxLen := 0;
  For I := 0 To Memo1.Lines.Count-1 Do
    If Length(Memo1.Lines[i]) > MaxLen Then 
       MaxLen := Length(Memo1.Lines[i]);

  For I := 0 to Memo1.Lines.Count-1 Do
    While Length(Memo1.Lines[i]) < MaxLen Do
       Memo1.Lines[i] := Memo1.Lines[i] + '0';
end;

конечно, это не оптимально, надо бы сначала строчку скопировать в буфер и работать там, но так понятнее.

Ну а матрицу (массив) уже там легко образмерить и заполнить. только помни, что индексы матрицы и Memo начинаются с 0, а номера символов в строке - с 1.
Ответить с цитированием
  #5  
Старый 06.04.2010, 00:57
Whisper Whisper вне форума
Прохожий
 
Регистрация: 05.04.2010
Сообщения: 3
Репутация: 10
По умолчанию

Извините, а не подскажете как это всё-таки сделать с помощью StringGrid, а то предполагается добавление еще 1-го столбца (с числами в диапазоне [0;1](возможно сразу при вводе)) и сортировка по нему по убыванию.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025