![]() |
|
|
Регистрация | << Правила форума >> | 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
|