IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Novotný:22.12.2015 21:16

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
Petr Novotný:22.12.2015 21:21

ekonomii

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

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

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

Proč si to neudelas sam?

Nahoru Odpovědět
22.12.2015 21:48
Vi veri universum vivus vici
Avatar
Petr Novotný:22.12.2015 21:58

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
Tvůrce
Avatar
Odpovídá na Petr Novotný
Martin Dráb:23.12.2015 0:53

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
23.12.2015 0:53
2 + 2 = 5 for extremely large values of 2
Avatar
Petr Novotný:23.12.2015 10:08

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
Tvůrce
Avatar
Odpovídá na Petr Novotný
Jindřich Máca:24.12.2015 12:41

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
24.12.2015 12:41
Avatar
Petr Novotný:24.12.2015 15:13

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
24.12.2015 15:13
Avatar

Člen
Avatar
:7.1.2017 17:30

Mohl by mi někdo poradit jak zprogramovat v Turbo pascalu případně ve Freepascalu (FPC) řešení sudých magických čtverců ?

 
Nahoru Odpovědět
7.1.2017 17:30
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 11 zpráv z 11.