![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Ситуация следующая. Нужно дописать программу. Первый столбец при нажатии первой кнопки должен рандомно заполняться числами. При нажатии второй кнопки, второй столбец должен упорядочить эти числа в порядке возрастания. Первое получилось. но при нажатии второй кнопки, он ставит все числа так же, как в первом столбце. Пожалуйста подскажите, что дописать нужно.
Код:
unit GLAV_FM; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TFM_GLAV = class(TForm) TABL: TStringGrid; POLE_N: TEdit; KN_ZAP: TButton; KN_SORT: TButton; procedure KN_ZAPClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure KN_SORTClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FM_GLAV: TFM_GLAV; implementation {$R *.dfm} CONST MAX_N = 300 ; TYPE T_M = ARRAY [ 1 .. MAX_N ] OF WORD ; VAR N : WORD ; PROCEDURE PP_SORT ( K: WORD ; VAR M : T_M ); BEGIN // сделать END ; procedure TFM_GLAV.FormCreate(Sender: TObject); VAR I: WORD ; begin N := STRTOINT ( POLE_N.Text ) ; IF N > MAX_N THEN BEGIN N := MAX_N; POLE_N.Text := INTTOSTR ( N ) END ; TABL.RowCount := N + 1 ; FOR I := 1 TO N DO BEGIN TABL.Cells [ 0 , I ] := INTTOSTR ( I ) ; TABL.Cells [ 1 , I ] := INTTOSTR ( ROUND ( 1 + 498 * RANDOM ) ) END end; procedure TFM_GLAV.KN_SORTClick(Sender: TObject); VAR I: WORD ; CHISLA : T_M ; begin FOR I := 1 TO N DO BEGIN CHISLA [ I ] := STRTOINT ( TABL.Cells [ 1 , I ] ) ; PP_SORT ( N, CHISLA ) ; TABL.Cells [ 2 , I ] := INTTOSTR ( CHISLA [ I ] ) END end; procedure TFM_GLAV.KN_ZAPClick(Sender: TObject); VAR I: WORD ; begin N := STRTOINT ( POLE_N.Text ) ; IF N > MAX_N THEN BEGIN N := MAX_N; POLE_N.Text := INTTOSTR ( N ) END ; TABL.RowCount := N + 1 ; FOR I := 1 TO N DO BEGIN TABL.Cells [ 0 , I ] := INTTOSTR ( I ) ; TABL.Cells [ 1 , I ] := INTTOSTR ( ROUND ( 1 + 498 * RANDOM ) ) END end; end. Последний раз редактировалось Radichek, 21.06.2012 в 17:56. |
#2
|
||||
|
||||
![]() Строки 79 - 86. Надо заменить на:
Код:
FOR I := 1 TO N DO CHISLA [ I ] := STRTOINT ( TABL.Cells [ 1 , I ] );// Тут загружаем список PP_SORT ( N, CHISLA ); // Тут отправляем на сортировку FOR I := 1 TO N DO TABL.Cells [ 2 , I ] := INTTOSTR ( CHISLA [ I ] ); // Тут выводим что получилось |
#3
|
|||
|
|||
![]() Ребят, стыдно признаться, но реально не шарю, помогите пожалуйста. От этого зависит завтрашний экзамен.
|
#4
|
||||
|
||||
![]() Цитата:
|
#5
|
|||
|
|||
![]() В будущем естественно. Но завтра экзамен, а его нужно сдать) Помогите)
|
#6
|
|||
|
|||
![]() Вот исходник. Тут все, до того, как я начал изменять.
|
#7
|
|||
|
|||
![]() А че, простейшие сортировки не проходили. Классический пузырек, например? Вообще, рекомендую все делать в массиве, а в StringGrid только выводить результаты.
Вот сортировка: Код:
procedure SortArray(var A : Array Of Integer); var I, J, Swp : Integer, begin For I := Low(A) To High(A)-1 Do For J := I + 1 To High(A) Do If A[i]>A[J] Then Begin Swp := A[i]; A[i] := A[J]; A[J] := Swp; End; end; |
#8
|
||||
|
||||
![]() Я вот так сделал
Код:
unit GLAV_FM; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TFM_GLAV = class(TForm) TABL: TStringGrid; POLE_N: TEdit; KN_ZAP: TButton; KN_SORT: TButton; procedure KN_ZAPClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure KN_SORTClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FM_GLAV: TFM_GLAV; implementation {$R *.dfm} CONST MAX_N = 300 ; TYPE T_M = ARRAY [ 1 .. MAX_N ] OF WORD ; VAR N : WORD ; PROCEDURE PP_SORT ( K: WORD ; VAR M : T_M ); procedure ma(var a,b:word); var t:word; begin if (a>b) then begin t:=a; a:=b; b:=t; end; end; var i,j:integer; AA,BB:word; BEGIN for i := 1 to k - 1 do for j := 1 to k - 1 do begin AA:=M[j]; BB:=M[j+1]; ma(AA,BB); M[j]:=AA; M[j+1]:=BB; end; // сделать END ; procedure TFM_GLAV.FormCreate(Sender: TObject); VAR I: WORD ; begin N := STRTOINT ( POLE_N.Text ) ; IF N > MAX_N THEN BEGIN N := MAX_N; POLE_N.Text := INTTOSTR ( N ) END ; TABL.RowCount := N + 1 ; FOR I := 1 TO N DO BEGIN TABL.Cells [ 0 , I ] := INTTOSTR ( I ) ; TABL.Cells [ 1 , I ] := INTTOSTR ( ROUND ( 1 + 498 * RANDOM ) ) END end; procedure TFM_GLAV.KN_SORTClick(Sender: TObject); VAR I: WORD ; CHISLA : T_M ; begin FOR I := 1 TO N DO CHISLA [ I ] := STRTOINT ( TABL.Cells [ 1 , I ] ) ; PP_SORT ( N, CHISLA ); FOR I := 1 TO N DO TABL.Cells [ 2 , I ] := INTTOSTR ( CHISLA [ I ] ) end; procedure TFM_GLAV.KN_ZAPClick(Sender: TObject); VAR I: WORD ; begin N := STRTOINT ( POLE_N.Text ) ; IF N > MAX_N THEN BEGIN N := MAX_N; POLE_N.Text := INTTOSTR ( N ) END ; TABL.RowCount := N + 1 ; FOR I := 1 TO N DO BEGIN TABL.Cells [ 0 , I ] := INTTOSTR ( I ) ; TABL.Cells [ 1 , I ] := INTTOSTR ( ROUND ( 1 + 498 * RANDOM ) ) END end; end. |
#9
|
||||
|
||||
![]() Я хотел как то разнообразить ))))))))
|
#10
|
|||
|
|||
![]() Ребята, помогите, пожалуйста. Все сделал как описано выше, почему то результат не меняется.
|
#11
|
||||
|
||||
![]() Цитата:
11011111 INED Home code VK |