|
|
Регистрация | << Правила форума >> | 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. |
#7
|
|||
|
|||
Пасиб))ты мне во всём помогаешь, биг спс)
|
#8
|
|||
|
|||
Понял свою ошибку, она оказалось ппц тупой
|