Avatar
Petr Novotný:

Hledám někoho kdo by mi by vypracoval jednoduchý program v delphi 7 k seminární práci (viz příloha), cena dohodou. Díky

 
Odpovědět 22.12.2015 21:16
Avatar
Nahoru Odpovědět 22.12.2015 21:20
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Novotný:

ekonomii

 
Nahoru Odpovědět 22.12.2015 21:21
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Petr Novotný
Ondřej Krsička:

Kdyby to nebylo v Delphi, tak se na to vrhnu.

 
Nahoru Odpovědět 22.12.2015 21:45
Avatar
Tomáš Brůna
Redaktor
Avatar
Tomáš Brůna:

Proč si to neudelas sam?

Nahoru Odpovědět 22.12.2015 21:48
Lepší být šprt než blbec :)
Avatar
Petr Novotný:

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í.

 
Nahoru Odpovědět 22.12.2015 21:58
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Petr Novotný
Martin Dráb:

Ze zadání nechápu dvě věci:

  1. Píšou tam, že vstupní data jsou tvořena maticí o m řádkách a n sloupcích. Kde ale vezmu konkrétní čísla m a n? Samozřejmě, dá se to řešit operativně, pokud by bylo třeba (tzn. může to být na invenci řešitele).
  2. Vstupní data jsou zde, přísně vzato, žádná, protože se ta matice na začátku programu inicializuje náhodnými čísly.

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).

Nahoru Odpovědět  +1 23.12.2015 0:53
2 + 2 = 5 for extremely large values of 2
Avatar
Petr Novotný:

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 :D

 
Nahoru Odpovědět 23.12.2015 10:08
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Petr Novotný
Jindřich Máca:

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é. :D 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.
 
Nahoru Odpovědět  +1 24.12.2015 12:41
Avatar
Petr Novotný:

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.

 
Nahoru Odpovědět  +2 24.12.2015 15:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.