Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Заполнение матрицы


Автор: UpL1nK 26.12.2005, 21:49
Обьясните плз , как рандомно заполнить матрицу и числами и буквами(латинскими)
знаю тока :
for i:=1 to n do begin
for j:=1 to n do
x[i,j]:=random(100)
Это числа , а вот как буквы. да еще и вместе с числами ?!?

Автор: newalex 27.12.2005, 00:00
Смотри функции Ord и Chr. Они тебе явно помогут... smile

Автор: Zero 27.12.2005, 00:01
Цитата(UpL1nK @ 26.12.2005, 22:49)
а вот как буквы. да еще и вместе с числами ?!?

Легко, по номеру полученому рандомом, берёшь значение соответствующее номеру из таблицы ASCII
Код

...
randomize;
...
for i:=1 to n do begin
  for j:=1 to n do
    x[i,j]:=chr(random(36)+48)  {со здвигом на 48, т.к. первая нужная цифра начинается от 48-го символа}

Добавлено @ 00:03
При этом имей ввиду, что массив х, типа char
Код

  x:array[1..n] of char;

Автор: UpL1nK 27.12.2005, 08:55
Спасибо большое !
Но у меня возникла проблема, по задаче мне надо проверить К-ую строку , если в ней все числа нечетные то возвращаем ТРУ, но когда я пишу m[i,j] mod 2 <> 0 или odd(m[i,j]) компилятор говорит что не подходит тип , поскольку сама матрица char типа , a mod и odd неприемлимы , это как-нибудь можно исправить ?

Автор: Albinos_x 27.12.2005, 10:43
Цитата(UpL1nK @ 27.12.2005, 08:55)
но когда я пишу m[i,j] mod 2 <> 0 или odd(m[i,j]) компилятор говорит что не подходит тип , поскольку сама матрица char типа , a mod и odd неприемлимы , это как-нибуд

Код

... (ord(m[i,j]) mod 2)<>0 ...

Автор: volvo877 27.12.2005, 13:24
Если
Цитата(UpL1nK @ 27.12.2005, 07:55)
по задаче мне надо проверить К-ую строку , если в ней все числа нечетные то возвращаем ТРУ
, то сначала проверяй, является ли символ цифрой, а уж потом - четной или нечетной...

Кстати, этот способ:
Цитата(Zero @ 26.12.2005, 23:01)
    x[i,j]:=chr(random(36)+48)
заполнит матрицу не только буквами или цифрами... Между '9' и 'A' в таблице Ascii есть еще 7 символов, которые НЕ являются ни буквами, ни цифрами: ':;<=>?@'... Если тебе нежелательно, чтобы это попало в массив, то надо сделать чуть-чуть иначе...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)