Массивы

wfall

New member
16.09.2013
2
0
#1
как сделать чтобы на листбоксе при выводе размерности матрицы отображались как сама матрица
напр так:
1 2 3
4 5 6
7 8 9
а выводится так:
1
2
3

4
5
6

7
8
9 помогите) пжл)
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
Var a:array[1..10,1..10] of byte;
summ:array[1..10] of byte;
i,j,m,n,max:integer;
SummChet, SummNechet:integer;
begin
writeln('vvedite razmernost matrici mxn: ');
m:=StrToInt(InputBox('Ввод','m= ',''));
n:=StrToInt(InputBox('Ввод','n= ',''));
for i:=1 to m do
for j:=1 to n do begin
a[i,j]:=StrToInt(InputBox('Ввод','a['+IntToStr(i)+','+IntToStr(j)+']= ',''));
end;
for i:=1 to m do begin
for j:=1 to n do begin
ListBox1.AddItem(IntToStr(a[i,j]),nil);
summ:=summ+a[i,j];
end;
ListBox1.AddItem('',nil);
end;
ListBox1.AddItem('summa elementov kajdoi stroki: ',nil);
max:=summ[1];
for i:=1 to m do
begin
ListBox1.AddItem(IntToStr(i)+' stoka: '+IntToStr(summ),nil);
if summ>max then max:=summ;
end;
ListBox1.AddItem('max summa:'+IntToStr(max),nil);
ListBox1.AddItem('pomenyali pervuyu stoku s poslednei: ',nil);
for i := 1 to n do
begin
j := a[1, i];
a[1, i] := a[m, i];
a[m, i] := j;
end;
for i := 1 to m do
begin
for j := 1 to n do
ListBox1.AddItem(IntToStr(a[i,j]),nil);
ListBox1.AddItem('',nil);
end;
// Считаем сумму четных/нечетных элементов
ListBox1.AddItem('summa elementov 4etnih i ne4etnih 4isel: ',nil);
SummChet := 0;
SummNechet := 0;
for i := 1 to m do
for j := 1 to n do
begin
if (a[i, j] mod 2 = 0) then
inc(SummChet, a[i, j])
else
inc(SummNechet, a[i, j]);
end;
ListBox1.AddItem('summa chetnih: '+IntToStr(SummChet),nil);
ListBox1.AddItem('summa nechetnih: '+IntToStr(SummNechet),nil);
ListBox1.AddItem(IntToStr(i)+' stoka: '+IntToStr(summ),nil);
end;

end.
 

Вложения

R

rrrFer

#2
Код:
for i := 1 to m do
begin
for j := 1 to n do
ListBox1.AddItem(IntToStr(a[i,j]),nil); // почему тут nil?
ListBox1.AddItem('',nil);
end;
ведь nil - конец строки, вы ставите его в каждую строку, поэтому и появляются лишние переводы.