![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Значит задание такое: из элементов двух массивов,которое больше некоторого числа составить третий, вывести его на экран, посчитать колличество элементов, их произведение и чтобы кол-во столбцов в StringGrid динамически менялось от кол-ва элементов третьего массива
Я делал вот так: Код:
Const
N=10;M=15;Z=25;
var
Form1: TForm1;
C: array [1..N] of integer;
T: array [1..M] of integer;
B: array [1..Z] of integer;
implementation
{$R *.dfm}
procedure TForm1.goClick(Sender: TObject);
var i,p,d:integer;
chislo:integer;
begin
label1.Caption:='';
label2.Caption:='';
chislo:=StrToInt(edit1.Text);
p:=1;
d:=0;
for i:=1 to N do
begin
C[i]:=1+random(N);
if (C[i]>chislo) then
begin
B[i]:=C[i];
end;
end;
for i:=1 to M do
begin
T[i]:=1+random(M);
if (T[i]>chislo) then
begin
B[i+N]:=T[i];
end;
end;
with StringGrid1 do
begin
for i:=1 to Z do
begin
d:=d+1;
p:=p*B[i];
ColCount:=d;
Cells[i-1,0]:=IntToStr(b[i]);
end;
label1.Caption:='Всего элементов: '+IntToStr(d);
label2.Caption:='Произведение элементов массива: '+IntToStr(p);
end;
end;
end.Но в результате в StringGrid выводятся '0',а если прописать условие на фильтрацию этих нулей, то выводятся пустые ячейки((( Помогите плз) Заранее благодарен! |
|
#2
|
||||
|
||||
|
А где у вас Randomize?:
![]() |
|
#3
|
|||
|
|||
|
Да он тут по сути и ненужен, рандомайз даёт рандомное значение при каждом повторном запуске цикла, а тут этого не требуется, вопрос остаётся в силе, как вычеркнуть пустый ячейки из StringGrid
|
|
#4
|
||||
|
||||
|
Цитата:
Код:
StringGrid1.ColCount := Число Столбцов;
StringGrid1.RowCount := Число Строк;Попробоуй ниписать так ![]() |
|
#5
|
|||
|
|||
|
Да не ето нето, ето указывает колличество строк и столбцов, а м нужно чтобы пустая ячейка вычёркивалась, например 21 _ 45 -> 21 45 , хотя я не понимаю и за чего ето происходит(
|
|
#6
|
|||
|
|||
|
Я бы так это делал.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
StringGrid1: TStringGrid;
Edit1: TEdit;
Button1: TButton;
StringGrid2: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const
N=10;M=15;Z=25;
var
Form1: TForm1;
C: array [0..N] of integer;
T: array [0..M] of integer;
B: array [0..Z] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,p,d,max:integer;
chislo:integer;
begin
StringGrid1.Refresh;
label1.Caption:='';
label2.Caption:='';
chislo:=StrToInt(edit1.Text);
StringGrid1.Cells[0,1]:='C';
StringGrid1.Cells[0,2]:='T';
for i:=1 to N do
begin
C[i]:=random(100);
StringGrid1.Cells[i,1]:=IntToStr(C[i]);
end;
for i:=0 to M do
begin
T[i]:=random(100);
StringGrid1.Cells[i+1,2]:=IntToStr(T[i]);
end;
d:=-1;
for i:=0 to N do
begin
if (C[i]>chislo) then
begin
d:=d+1;
B[d]:=C[i];
end;
end;
for i:=0 to M do
begin
if (T[i]>chislo) then
begin
d:=d+1;
B[d]:=T[i];
end;
end;
StringGrid2.ColCount:=d;
StringGrid2.Cells[0,1]:='B';
for i:=0 to d do
begin
StringGrid2.Cells[i+1,1]:=IntToStr(B[i]);
end;
p:=1;
for i:=0 to d do
begin
p:=p*b[i];
end;
label1.Caption:='Âñåãî ýëåìåíòîâ: '+IntToStr(d);
label2.Caption:='Ïðîèçâåäåíèå ýëåìåíòîâ ìàññèâà: '+IntToStr(p);
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
For i:=0 to M-1 do
StringGrid1.ColWidths[i]:=Trunc(StringGrid1.Width /M);
end;
end. |