|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помощь "чайнику". Простые вопросы.
Здравствуйте!
Заранее извиняюсь,если аналогичные вопросы были, просто очень сложно и по времени получается долго их искать. Поскольку изучаю делфи и это надолго,то решила создать так скажем персональную страничку! Буду очень благодарна всем, кто сможет потратить на мои вопросы несколько минут 1. Как задать массив многомерный 5 столбцов по 4 строки? A: array [..] of Integer; Что в скобках писать? 2. Вывод массива на экран. Чтобы выводился массив в поле Label Что надо писать после Label1.Caption:= ? Спасибо. |
#2
|
|||
|
|||
Многомерный массив:
Код:
A: array [0..4] of array [0..3] of Integer либо короче A: array [0..4, 0..3] of Integer; вывод массива Если выводить в лейбл то делаешь вложенный цикл и прогоняешь все значения разделяя их пробелом, как заканчиваетмся строка массива добавляешь в конец текста окончание строки и перевод каретки #10#13 Либо можно проще вывести в стринг грид |
#3
|
|||
|
|||
1. Array[0..4, 0..3]
2. Label1.Caption:= IntToStr(a[i, j]) |
#4
|
||||
|
||||
1. mas: array [0..4, 0..3] of integer
2. Двумерный массив в Label: Код:
var s:string; i,j:byte; For i:=0 to 4 do for j:=0 to 3 do s:=s+IntToStr(mas[i,j]); Label1.Caption := s; Правда, будет сначала первый столбец, затем второй, и так далее, там решиш как тебе нужно. На заметку: Кстати, я тут с преподом спорил немножко насчет того, что в массиве первым является, тоесть [столбец, строка] или наоборот. Я считаю, что первый это столбец, хотя все зависит от того как туда будем писать информацию, и соответственно считывать. Препод уперся как баран на новые ворота. Вобщем опытные люди (хотя у меня у самого опыта не мало), скажите что-нибудь по этому поводу. Как принято? И вообще в памяти как это все дело хранится? Пока писал текст уже успели ответить Последний раз редактировалось :S.p.a.m., 27.06.2009 в 17:54. |
#5
|
|||
|
|||
Код:
for i:=1 to NT do st := st + IntToStr(i)+ ' '+ A[i] + #10#13; Ругается Incompatible types: 'String' and 'Array' |
#6
|
|||
|
|||
И как вообще можно проще вывести массив??
Если не в Label. |
#7
|
||||
|
||||
помойму если так A: array [0..4] of array [0..3] of Integer то обращаться к нему так a[0][1], хотя я не уверен. я так не делал
|
#8
|
|||
|
|||
Проще только так:
Код:
var i, j: Integer; begin for i := 0 to 4 do for j := 0 to 3 do StringGrid.Cells[i, j] := IntToStr(A[i, j]); на формк лежит компонент StringGrid с 4 строками и 5 столбцами |
#9
|
|||
|
|||
Уже с помощью вот этого вывела
Код:
var s:string; i,j:byte; For i:=0 to 4 do for j:=0 to 3 do s:=s+IntToStr(mas[i,j]); Label1.Caption := s; Только там выводятся 0 в одну строку. Как их разделить? Чтобы выводился как матрица 5*4? |
#10
|
||||
|
||||
ну дак уже писали же: вставляем код #10#13, это коды возврата каретки (13) и новой строки(10). Вот как раз после вложеного цикла, добавляем в строку это #10#13.
Код:
For i:=0 to 4 do begin for j:=0 to 3 do s:=s+IntToStr(mas[i,j]); s:=s+#10#13; end; Думаю с разделением пробелом числа не так сложно и писать не буду, мозг нужно тренеровать, попробуйте сами сначала, а потом уж пишите если не получится. |
#11
|
||||
|
||||
Небольшой комментарий.
Спецкоманды #10#13 унаследованы еще с времен алфавитно-цифровых дисплеев. И интерпретируются как на механической печатной машинке: #13 - переместить каретку в начало #10 - переместить каретку вниз на 1 строку. Поэтому принято писать сначала #13 а уже потом #10 Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |