![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
1. Задать два исходных одномерных массива (шифр забойного двигателя (ЗД) и параметр) с помощью инициализации. Вывести исходную информацию через компонент Label.
2. Обработать одномерный массив согласно варианту задания. Для обработки массива создать подпрограмму. Использовать передачу параметров по значению. Результат обработки вывести на форму. 3. В соответствии с заданным критерием отфильтровать шифры забойных двигателей и сформировать третий массив, содержащий порядковые номера отобранных забойных двигателей. 4. Вывести результаты отбора в виде таблицы, содержащей шифр забойного двигателя и соответствующий параметр. (*) Вывод результатов осуществить через компонент StringGrid. (**) Реализовать задание с использованием компонента MainMenu. Вот что сделал: http://rapidshare.com/files/109043045/____5.rar.html Третий и четвертый пункт сделать не могу.. не знаю как.. спасибо заранее =) |
|
#2
|
|||
|
|||
|
Не могу скачать архив - совсем рапидшара офонарела со своими кодами.
Должно быть что-то типа того (инициализация для простоты случайным образом) Форма: Код:
object Form1: TForm1
Left = 192
Top = 114
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 8
Width = 22
Height = 13
Caption = 'Исх:'
end
object Label2: TLabel
Left = 168
Top = 8
Width = 53
Height = 13
Caption = 'Фильтр.'
end
object StringGrid1: TStringGrid
Left = 8
Top = 24
Width = 137
Height = 409
ColCount = 2
FixedCols = 0
RowCount = 1
FixedRows = 0
TabOrder = 0
end
object Button1: TButton
Left = 328
Top = 24
Width = 75
Height = 25
Caption = 'Go'
TabOrder = 1
OnClick = Button1Click
end
object StringGrid2: TStringGrid
Left = 168
Top = 24
Width = 137
Height = 409
ColCount = 2
FixedCols = 0
RowCount = 1
FixedRows = 0
TabOrder = 2
end
endСобственно программа: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
StringGrid2: TStringGrid;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ar1 : Array Of String; // шифры
ar2 : Array Of Double; // параметры
ar3 : Array Of Integer; // индексы отфильтровки
procedure Init; // инициализация. Для простоты - случайным образом.
procedure PrintOut; // вывод
procedure Filtr; // фидьрация
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Init;
Filtr;
PrintOut;
end;
procedure TForm1.Filtr;
var
I : Integer;
begin
SetLength(Ar3,0); // длинна массива = 0
For I := Low(Ar2) To High(Ar2) Do // перебираем все параметры
If Ar2[i] > 0.5 Then //твое условие отбора. здесь - парам. > 0.5
Begin
SetLength(Ar3,Length(ar3)+1); // увеличить длинну массива на 1
Ar3[High(Ar3)] := I; // сохранить в новом элементе текущий индекс
End;
end;
procedure TForm1.Init;
var
N : Integer;
I : Integer;
begin
// Сколько будет исходный данных
Randomize;
N := 1 + Round(20 * Random);
// Ставим длинну
SetLength(Ar1,N);
SetLength(Ar2,N);
// инициализируем массивы
For I := Low(Ar1) To High(Ar1) Do
begin
Ar1[i] := Chr(Round(26 * Random) + 65) + IntToStr(I); // буква + номер
Ar2[i] := Random;
end;
// Выводим для наглядности
StringGrid1.RowCount := N + 1; // 1- заголовок
StringGrid1.Cells[0,0] := 'Шифр';
StringGrid1.Cells[1,0] := 'Парам.';
For I := 0 To Length(Ar1) - 1 Do
Begin
StringGrid1.Cells[0,I+1] := Ar1[i];
StringGrid1.Cells[1,I+1] := FloatToStr(Ar2[i]);
End;
end;
procedure TForm1.PrintOut;
var
I : Integer;
begin
StringGrid2.RowCount := Length(Ar3) + 1; // 1- заголовок
StringGrid2.Cells[0,0] := 'Шифр';
StringGrid2.Cells[1,0] := 'Парам.';
For I := 0 To Length(Ar3) - 1 Do
Begin
StringGrid2.Cells[0,I+1] := Ar1[Ar3[i]];
StringGrid2.Cells[1,I+1] := FloatToStr(Ar2[Ar3[i]]);
End;
end;
end. |
|
#3
|
|||
|
|||
|
че-т я не могу разобраться.. =((
Вот что я смог сделать вчера.. Для Form: Код:
object Form1: TForm1
Left = 193
Top = 134
Width = 673
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Menu = MainMenu1
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 3
Top = 72
Width = 3
Height = 13
end
object Label2: TLabel
Left = 144
Top = 72
Width = 3
Height = 13
end
object Label3: TLabel
Left = 0
Top = 48
Width = 207
Height = 13
Caption = 'Шифр Максимальный перепад давления'
end
object Label4: TLabel
Left = 0
Top = 288
Width = 3
Height = 13
end
object StringGrid1: TStringGrid
Left = 296
Top = 64
Width = 201
Height = 153
ColCount = 3
FixedCols = 0
RowCount = 6
TabOrder = 0
RowHeights = (
24
24
24
24
24
24)
end
object MainMenu1: TMainMenu
object N1: TMenuItem
Caption = 'Файл'
object N3: TMenuItem
Caption = 'Исходные данные'
OnClick = N3Click
end
object max1: TMenuItem
Caption = 'max перепад давления'
Enabled = False
OnClick = max1Click
end
object N51: TMenuItem
Caption = Перепад давления 5Мпа'
end
end
object N2: TMenuItem
Caption = 'Выход'
OnClick = N2Click
end
end
endПрограмма: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
max1: TMenuItem;
N51: TMenuItem;
StringGrid1: TStringGrid;
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure max1Click(Sender: TObject);
procedure N51Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
max:real;
n:real;
i:integer;
shifr:array[1..16] of string=('А6ГТШ','А7ГТШ','А7ГТШ-ТЛ','А7Ш','А9ГТШ-ТЛ','А09Ш','ЗТСШ1-172','ЗТСШ1-195','ЗТСШ1-195ТЛ','ЗТСШ-195','ЗТСШ-240','Т12МЗБ-195','Т12МЗБ-215','Т12МЗБ-240','Т12МЗЕ-172','ТС5Е-172');
pressure:array[1..16] of real=(5,7,5,10,5,8.5,7.5,4.5,4,6,6,4.5,3,5,4,5);
implementation
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject);
var a:integer;
b:integer;
begin
for b:=1 to 16 do
label2.Caption:=label2.caption+FloatToStr(pressure[b])+#13;
for a:=1 to 16 do
label1.Caption:=label1.caption+shifr[a]+#13;
max1.Enabled:=true;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.max1Click(Sender: TObject);
begin
max:=pressure[1]; n:=1;
for i:= 2 to 16 do
if max<pressure[i] then
begin
max:=pressure[i]; n:=i;
end;
label4.Caption:='Максимальный перепад давления:' +FloatToStr(max);
end;
procedure TForm1.N51Click(Sender: TObject);
begin
//не знаю, что сюда писать
end;
end. |
|
#4
|
|||
|
|||
|
Ну смотри.
Мои массивы Ar1 и Ar2 - это твои shifr и pressure. Только я опять же воспользовался динамическими, т.к. руками просто лень забивать. Маленькая ремарка - динамические массивы всегда начинаются с 0. Далее, как я понимаю, во втором массиве расположены значения перепада давления. Соответсвенно, в моей процке Filtr условие для твоих массивов должно выглядеть как Код:
If pressure[i] >= 5 Then ... Допустим: Код:
var
pressure5Count : Integer;
pressure5 : Array [1..16] Of Integer;
procedure TForm1.Filtr;
var
I : Integer;
begin
pressure5Count := 0; // пока массив не заполнен
For I := 1 To 16 Do // перебираем все параметры
If pressure[i] >= 5 Then //твое условие отбора. здесь - парам. > 5
Begin
pressure5Count := pressure5Count + 1; // используем следующую ячейку
pressure5[pressure5Count] := I; // сохранить в новом элементе текущий индекс
End;
end;Таким образом, при запуску Filtr тмеем переменную pressure5Count, в которой находится кол-во насосов с перепадом давления 5 или больше МПа и заполненный массив с номерами насосов pressure5. Про вывод. Фактически, мы имеем в pressure5Count кол-во нужных нам насосов. В StringGrid1 мы должны создать соотв. кол-во строк (+1 на заголовок). Нумерация у них начинается с 0. И заголовок тоже надо заполнить. Для твоего случая будет что-то в этом роде: Код:
procedure TForm1.PrintOut;
var
I : Integer;
begin
StringGrid1.RowCount := pressure5Count + 1; // 1я - заголовок
StringGrid1.Cells[0,0] := 'Шифр';
StringGrid1.Cells[1,0] := 'Парам.';
For I := 1 To pressure5Count Do
Begin
StringGrid1.Cells[0,I] := shifr[pressure5[i]];
StringGrid1.Cells[1,I] := FloatToStr(pressure[pressure5[i]]);
End;
end;здесь, вроде, все понятно. |
|
#5
|
|||
|
|||
|
спасибо огромное =) все сделал, но чуть по-другому..
|
|
#6
|
|||
|
|||
|
Задан массив А, вывести из него массив В который будет содержать все числа из А, за исключением максимального
|
|
#7
|
|||
|
|||
|
если не трудно и есть возможность - напишите вконтакт на id3903580
|