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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 03:06   #1
Беллая
Пользователь
 
Аватар для Беллая
 
Регистрация: 30.07.2010
Сообщений: 44
По умолчанию Вывод матрицы на экран (Delphi7)

Здравствуйте, форумчане. У меня к вам есть вопрос -
пишу свою первую программу в Делфи ("Оптимизация параметров рабочего процесса вертолетного ТВД").
Раньше, в студенческие годы, изучала Турбо Паскаль.
А здесь в Делфи - как вывести на что-нибудь (на форму, наверное) не знаю.
Научите как по-проще вывести матрицы a и b (procedure OutputArray_a. Самое главное - куда их выводит мною написанная программа, ведь ошибок Делфи не выдает? Вот программа:

Код:
unit MNK;

interface

var
n: integer;
x: array [1..20] of Real;
y: array [1..20] of Real;
a: array [1..6,1..6] of Real;

procedure CreateMatricaGrama; 

function Create_Element1: real;
...
function Create_Element36: real;

procedure OutputArray_a; // вывод матрицы a на экран

implementation

procedure CreateMatricaGrama;

begin
x[1]:=6; ... x[20]:=21;
y[1]:=1350; ... y[20]:=1550;
end;

function Create_Element1: real;
var
s1: Real;
n: Integer;
begin
s1:=0;
for n:=1 to 20 do s1:=s1+x[n]*x[n]*x[n]*x[n];
Result:=s1;
a[1,1]:= Result;
//write(a[1,1]);
end;

...

function Create_Element36: real;
var
s36: Real;
n: Integer;
begin
s36:=0;
for n:=1 to 20 do s36:=s36+1*1;
Result:=s36;
a[6,6]:=Result;
//write(a[6,6]);
end;

procedure OutputArray_a;// вывод матрицы a на экран
var
i,j: Integer;
begin
Writeln('Вывод массива матрицы "а" в виде матрицы.');
  FOR i:=1 TO 6 DO begin
    FOR j:=1 TO 6 DO Write( a[i,j]:6 );
    Writeln
  end;


end;

end.
Say we can do it together

Последний раз редактировалось Stilet; 17.08.2010 в 08:23.
Беллая вне форума Ответить с цитированием
Старый 17.08.2010, 07:56   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Выводит-то, по сути, в никуда, потому как в Делфи Write и Read - это операции с файлами. Вы бы лучше куда-нибудь в Label выводили - ну или прямо на канву.
На канву можно так:
Код:
x:=10;y:=150;
For I:=1 to 6 Do
Begin
       For J:=1 to 6 Do
       Begin
              Canvas.TextOut(x,y,IntToStr(A[i,j]));
              x:=x+20;
       End;
       x:=10;y:=y+20;
End;
Хотя конечно не очень умно выводить матрицу на канву, если не ошибааюсь, в Label так:
Код:
For I:=1 to 6 do
begin
       For j:=1 to 6 do
       Begin
              Label1.Caption:=Label1.Caption+IntToStr(A[i,j]);
              Label1.Caption:=Label1.Caption+'  ';
       End;
       Label1.Caption:=Label1.Caption+#13;
End;
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.08.2010, 10:17   #3
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Цитата:
Хотя конечно не очень умно выводить матрицу на канву, если не ошибааюсь, в Label так
Ого! В Label что ли лучше?
Я б в Memo вывел.
А вообще можно эту программку консольной сделать, тогда компоненты использовать не надо.

Цитата:
пишу свою первую программу в Делфи ("Оптимизация параметров рабочего процесса вертолетного ТВД").
Не хило для первой программы
Вы бы с чего-нибудь попроще начали, самоучитель почитали бы, тогда бы и тему такую создавать, думаю, не стали. В конечном итоге вам нужно научиться программировать или выполнить одно задание? Если первое - возьмите самоучитель в руки, если второе, причем срочно - то тут, конечно, поможем.
Но если срочности нет - то все равно лучше разобраться самому.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 17.08.2010 в 10:21.
ex.cluz вне форума Ответить с цитированием
Старый 17.08.2010, 11:16   #4
Беллая
Пользователь
 
Аватар для Беллая
 
Регистрация: 30.07.2010
Сообщений: 44
По умолчанию Спасибо, за ответы, особенно ex.cluz.

Спасибо, за ответы, особенно ex.cluz.
У меня есть месяц для написания программы. Всю математику я сама писала и данные эксперимента обработала да только в Экселе (просто вычислением без использования программирования). Дело в том, что я- инженер в НИЛе, не программист, а тут наш программист уходит и мне поручают задачу- запрограммировать мою математику. Разобраться, думаю, в итоге смогу, да только вот в задачу вывода результатов вычисления массивов мне срочно нужно сделать, чтобы проверить правильность составленной программы и двигаться дальше.
Say we can do it together
Беллая вне форума Ответить с цитированием
Старый 17.08.2010, 11:28   #5
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию

поместите на форму компонент StringGrid - это по сути таблица,
настройте в ее свойствах кол-во столбцов и строк, там по умолчанию стоит 5 шт, исправте на 7(RowCount ColCount)
и подправьте код вывода на:
Код:
 FOR i:=1 TO 6 DO begin
    FOR j:=1 TO 6 DO {Write( a[i,j]:6 );} StringGrid1.Cell[i,j] := FloatToStr(a[i,j]);
GoodDA вне форума Ответить с цитированием
Старый 17.08.2010, 11:39   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Беллая, мне не совсем понятен вот этот код, точнее выделенная строка {функция function Create_Element36: real ;}
Код:
s36:=0;
for n:=1 to 20 do s36:=s36+1*1;
Result:=s36;
По моему, если это написать так, то результат будет тот же...

Код:
for n:=1 to 20 do
  Inc(s36);
А еще проще - s36:=20;
или я не прав???
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 17.08.2010 в 11:49.
Grag вне форума Ответить с цитированием
Старый 17.08.2010, 11:42   #7
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Т.е. я так понимаю нужен вывод через компонент.
Если все просто надо - то киньте на форму Memo и выводите туда.
Попозже код кину.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 17.08.2010, 11:47   #8
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Наверное, проще сделать процедуру вывода двумерного массива в StringGrid...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 17.08.2010, 12:36   #9
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Ого! В Label что ли лучше?
Уж лучше, чем на канву. Однако, разумеется в Memo разумней .
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.08.2010, 14:44   #10
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

StringGrid, видимо, не нужен. Вывод массивов вообще нужен только для просмотра промежуточного результата, насколько я понял ТС. Хотя, кому что удобнее...

То, что обещал:
Код:
procedure OutputArray_a;// вывод матрицы a на экран
var
i,j: Integer;
buf: string;
begin
  buf:=''; //тут две одинарных кавычки, а не одна двойная, как может показаться на первый взгляд
  Memo1.Lines.Append('Вывод массива матрицы "а" в виде матрицы.');
  FOR i:=1 TO 6 DO begin
    FOR j:=1 TO 6 DO if j<>6 then buf:=buf+IntToStr(a[i,j])+#9; //IntToStr - функция перевода целого числа в строку; #9 - знак табуляции
    else begin Memo1.Lines.Append(buf); buf:=''; end;
end;
end;
Хотя со стринг гридом код выглядит элегантнее...

П.С. Если у вас в матрице не целые числа, то IntToStr нужно заменить на FloatToStr.

Удачи!


Добавлено позже:

Да, на форму надо кинуть компонент Memo.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 17.08.2010 в 14:48.
ex.cluz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод на экран Nikolai_90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 02.05.2012 09:25
Форматированный вывод в Delphi7 Sanguineus Общие вопросы Delphi 5 24.05.2011 10:13
Вывод матрицы на экран [Паскаль] mistertvister Помощь студентам 8 04.11.2009 23:44
Создание матрицы с последующим вводом переменных в Delphi7 Virtualex Помощь студентам 2 06.10.2009 15:28
решение Матрицы Delphi7 Naposaram Помощь студентам 4 23.11.2008 16:42