Diskuze: seminární práce
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Kdyby to nebylo v Delphi, tak se na to vrhnu.
Proč si to neudelas sam?
Musím udělat ještě další 3 semestrální práce, navíc to zrovna nespadá moc do mého oboru, ale hlavně nemám a nemůžu najít žádný pořádný studijní podklady k tomuto programu. Dále nikdo ze známých co programují tak v tomhle bohužel neuměj. No je to chyba školy, předmět uplně mimo můj obor, k tomu v programu co se asi už moc nepoužívá a přednášející, který v tom sám neumí.
Ze zadání nechápu dvě věci:
Jedná se o povinný předmět?
Na tuhle úlohu nemusíš znát vůbec nic z Delphi, lze ji naprogramovat i v Borland/Turbo/Free Pascalu (to samé platí i o studijních materiálech).
Bohužel je to povinný předmět, no já jsem se dostal k tomu, že do úlohy dám 2 edity (m,n), kterými nastavím počet sloupců a řádku toho stringgridu po stisknutí tlačítka a pak tam mám další tlačítko jímž do té matice generuji náhodná čisla, ale dál už nevím
Ahoj, tak jsem něco sesmolil a doufám, že to odpovídá těm požadavkům, protože dle mého názoru nejsou zrovna jednoznačné. Celý projekt je ke stažení na https://drive.google.com/…bXBMMlE/view?… a můžeš to považovat za vánoční dárek. Kdyby jsi k tomu měl nějaké dotazy, tak se klidně ptej.
Pro ostatní sem alespoň pošlu zdrojový kód v Pascalu:
unit Vysledky;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TWindow = class(TForm)
Label1: TLabel;
Label2: TLabel;
EditM: TEdit;
EditN: TEdit;
Table: TStringGrid;
Generate: TButton;
LabelError: TLabel;
FindMin: TButton;
Sort: TButton;
procedure GenerateClick(Sender: TObject);
procedure FindMinClick(Sender: TObject);
procedure SortClick(Sender: TObject);
private
{ Private declarations }
m, n : integer;
procedure SwitchToFirst(Position, Row: integer);
procedure SwitchRows(Row1, Row2: integer);
procedure Quicksort(l, r: integer);
public
{ Public declarations }
end;
var
Window: TWindow;
implementation
{$R *.dfm}
procedure TWindow.SwitchToFirst(Position, Row: integer);
var tmp: string;
begin
if Position > 0 then
begin
tmp := Table.Cells[0, Row];
Table.Cells[0, Row] := Table.Cells[Position, Row];
Table.Cells[Position, Row] := tmp;
end;
end;
procedure TWindow.SwitchRows(Row1, Row2: integer);
var j: integer; tmp: string;
begin
for j := 0 to n do
begin
tmp := Table.Cells[j, Row1];
Table.Cells[j, Row1] := Table.Cells[j, Row2];
Table.Cells[j, Row2] := tmp;
end;
end;
procedure TWindow.Quicksort(l, r: integer);
var i, j, pivot: integer;
begin
i := l; j := r;
pivot := StrToInt(Table.Cells[0, (l + r) div 2]);
repeat
while (i < r) and (StrToInt(Table.Cells[0, i]) < pivot) do i := i + 1;
while (j > l) and (pivot < StrToInt(Table.Cells[0, j])) do j := j - 1;
if i <= j then
begin
SwitchRows(i, j);
i := i + 1;
j := j - 1;
end;
until i > j;
if j > l then quicksort(l, j);
if i < r then quicksort(i, r)
end;
procedure TWindow.GenerateClick(Sender: TObject);
var i, j: integer;
begin
// Variable initialization.
if TryStrToInt(EditM.Text, m) = false then
begin
LabelError.Caption := 'M musí být celé èíslo!';
exit;
end;
if TryStrToInt(EditN.Text, n) = false then
begin
LabelError.Caption := 'N musí být celé èíslo!';
exit;
end;
// Matrix generation.
Table.RowCount := m;
Table.ColCount := n;
m := m - 1;
n := n - 1;
for i := 0 to m do
for j := 0 to n do
Table.Cells[j, i] := IntToStr(Random(10));
Table.Visible := true;
FindMin.Visible := true;
Sort.Visible := true;
end;
procedure TWindow.FindMinClick(Sender: TObject);
var i, j, min, minJ: integer;
begin
// Find mininum in all rows and switch it to first column.
for i := 0 to m do
begin
min := 10;
minJ := 0;
for j := 0 to n do
begin
if StrToInt(Table.Cells[j, i]) < min then
begin
min := StrToInt(Table.Cells[j, i]);
minJ := j;
end;
end;
SwitchToFirst(minJ, i);
end;
end;
procedure TWindow.SortClick(Sender: TObject);
begin
// Sort all rows in matrix by values in the first column.
Quicksort(0, m);
end;
end.
Tak to je paráda, vážně jsem nečekal, že by mi to takhle někdo vytvořil a za nic. Toho si vážím, fakt dík.
Zobrazeno 11 zpráv z 11.