Anonymní profil Rodney – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Rodney – Programujte.comAnonymní profil Rodney – Programujte.com

 

Příspěvky odeslané z IP adresy 46.183.64.–

Delphi › Sečtení sudých čísel ve slou…
16. 12. 2013   #185345

jojo já si to upravil hned jak jsem to jsem vložil :-), všiml jsem si toho.

Delphi › Sečtení sudých čísel ve slou…
16. 12. 2013   #185342

Jen pro rozšíření, jak bych zajistil aby mezi jednotlivými čísly v řádku byly mezery ? Chtěl bych to trochu pochopit víc :-).

procedure TForm1.bt_tiskClick(Sender: TObject); {tlačítko pro tisk}
var soubor:TextFile;
matice:integer;
begin
Assignfile(soubor, 'Tisk.txt');   {vytvoří nový soubor, určen pro tisk}
rewrite(soubor);
writeln(soubor, 'Výsledná matice:');
for i:=1 to m do begin
for j:=1 to n do begin
  matice:=StrToInt(sg.Cells[j-1,i-1]);{definování co se do souboru vepíše}
  write(soubor, matice); {vepsání matice do souboru pro tisk}
  end;
      writeln(soubor, matice);
      end;
      closefile(soubor);
      end;
      end.

tohle mi funguje dobře jinak :-)

Delphi › Sečtení sudých čísel ve slou…
15. 12. 2013   #185296

jop, už mi to funguje správně :-).. Děkuju ti moc :-)

Delphi › Sečtení sudých čísel ve slou…
12. 12. 2013   #185176

Tak jsem to vyzkoušel a funguje mi to :-).

Jen bych se chtěl zeptat jak zajistím aby se mi v tom labelu pro výsledek zobrazil součet ze všech sloupců ?

Delphi › Sečtení sudých čísel ve slou…
11. 12. 2013   #185156

Děkuji ti moc :-). Nevím jak bych ti to mohl oplatit, jsem strašně rád za tvoji pomoc :-), zítra ráno si s tím pohraju, dneska už mi hlava vůbec nebere, a pak napíšu jak mi to funguje :-). Ještě jednou díky moc :-).

Delphi › Sečtení sudých čísel ve slou…
11. 12. 2013   #185149

Nevěnuju se programování zrovna dlouho, ale rád bych se do toho dostal hlouběji. Nicméně nejsem schopný ještě si ty chyby ve svých programech pořádně najít a opravit. Myslíš že by jsi se mohl podívat na ten můj program přímo ? Je tady na tomto odkaze. Já totiž si vážně nevím rady, každopádně si strašně moc cením tvé pomoci :-).

http://www.edisk.cz/stahni/48501/Program_matice.rar_194.13KB.html

Delphi › Sečtení sudých čísel ve slou…
11. 12. 2013   #185146

pokud chci spustit program napíše mi to 

[Warning] Unit1.pas(80): For loop control variable must be simple local variable.

Delphi › Sečtení sudých čísel ve slou…
11. 12. 2013   #185144

Blbne mi to v proceduře pro součet.

Delphi › Sečtení sudých čísel ve slou…
11. 12. 2013   #185141

Bohužel jsem to zkusil a nefunguje mi to :(, vážně si už nevím rady. Zkusím vám sem přiložit zdroják a pokud tam najdete něco špatně prosím o pomoc. Trávím nad tím už neskutečně moc hodin a zmocňuje se mě obrovská bezmoc :(.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    bt_priprav: TButton;
    edtn: TEdit;
    edtm: TEdit;
    bt_nacti: TButton;
    sg: TStringGrid;
    lbl_pro_n: TLabel;
    lbl_pro_m: TLabel;
    bt_soucet: TButton;
    bt_konec: TButton;
    Label1: TLabel;
    procedure bt_pripravClick(Sender: TObject);
    procedure bt_nactiClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure bt_konecClick(Sender: TObject);
    procedure bt_soucetClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Tmat=array[1..10,1..10] of integer; {určí hodnotu v jaké se má pohybovat
                                       generátor}
var
  Form1: TForm1;
  a:Tmat;
  n,m:integer; {určí proměnnou n a m, konrétně o jaký typ se jedná}
  result:integer;
  i,j:integer;
implementation

{$R *.dfm}

procedure TForm1.bt_pripravClick(Sender: TObject);
var sirka,vyska:integer;
begin
n:=StrToInt(Edtn.Text);       {načte z edtn hodnotu pro počet sloupců}
m:=StrToInt(Edtm.Text);       {načte z edtm hodnotu pro počet řádků}
sg.colcount:=n;         {nastavení počtu sloupců pomocí edtn}
sg.rowcount:=m;         {nastavení počtu řádků pomocí edtm}
sirka:=sg.DefaultColWidth;
vyska:=sg.DefaultRowHeight;
sg.Width:=n*sirka+n+4;        {nastavení šírky buňky}
sg.Height:=m*vyska+m+4;       {nastavení výšky buňky}
bt_nacti.Visible:=true;        {po nachystání stringridu se zobrazi
                                tlačítko pro naplnění stringridu}
end;

function soucet(j:integer; var a:Tmat):integer;
var i,vysledek:integer;
begin
Vysledek:=0;
for i:=1 to m-1 do
  if a[i,j] mod 2=0 then
    vysledek:=vysledek+a[i,j];
result:=vysledek;
end;

procedure TForm1.bt_nactiClick(Sender: TObject);
begin
for i:=1 to m do
for j:=1 to n do
begin
sg.cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
for i:=1 to 10 do
for j:=1 to 10 do
a[i,j]:=random(10)+1;

end;

procedure TForm1.bt_konecClick(Sender: TObject);
begin
close;
end;

procedure TForm1.bt_soucetClick(Sender: TObject);
var i,j:integer;
begin
for j:=0 to n-1 do
  sg.Cells[j,n]:=IntToStr(result(j,a));
end;

end.
Rodney
Delphi › Sečtení sudých čísel ve slou…
11. 12. 2013   #185134

#3 Honzc
Vyzkoušel jsem obě rady, bohužel si s tím lámu hlavu dál :(... Každopádně jsem velmi rád za vaši ochotu pomoct mi :-)...

dejme tomu že první radu pro zjednodušení nastavení matice udělám později, nejdříve bych rád docílil funkčnosti součtu těch čísel :-).

upravil jsem funkci následně

function soucet(j:integer; var a:Tmat):integer;
var i:integer;
begin
Result:=0;
for i:=1 to m-1 do
  if a[i,j] mod 2=0 then
    Result:=Result+a[i,j];

a samotnou proceduru pro výpočet následně 

procedure TForm1.bt_soucetClick(Sender: TObject);
var i,j:integer;
begin
for j:=0 to n-1 do
  sg.Cells[j,n]:=IntToStr(soucet(j,a));

end;

bohužel mi to ale opět nefunguje, program spustím dám připravit, naplnit ale jakmile dám součet nic se nestane :-/. Potom ale zadám do editů větší počet řádků a sloupců, dám připravit a vidím tam že se to sečetlo, ale je to sečetlé špatně. Prosím vás tedy znovu o radu :-).

Rodney
Delphi › Sečtení sudých čísel ve slou…
10. 12. 2013   #185080

Ahoj, potřeboval bych poradit.. Vytvořil jsem program, který mi připraví matici podle zadaných parametrů - počet řádků a počet sloupců. Potom do této matice pomocí generátoru náhodných čísel vygeneruji čísla z intervalu od 1 do 10. Potřeboval bych zajistit aby se mi ve sloupcích sečetly sudá čísla. Něco jsem zkusil, ale to samotné sečtení mi nějak nejde :-/. Přikládám zdrojová kód a prosím vás o radu :-).

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    bt_priprav: TButton;
    edtn: TEdit;
    edtm: TEdit;
    bt_nacti: TButton;
    sg: TStringGrid;
    lbl_pro_n: TLabel;
    lbl_pro_m: TLabel;
    bt_soucet: TButton;
    bt_konec: TButton;
    Label1: TLabel;
    procedure bt_pripravClick(Sender: TObject);
    procedure bt_nactiClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure bt_konecClick(Sender: TObject);
    procedure bt_soucetClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Tmat=array[1..10,1..10] of integer; {určí hodnotu v jaké se má pohybovat
                                       generátor}
var
  Form1: TForm1;
  a:Tmat;
  n,m:integer; {určí proměnnou n a m, konrétně o jaký typ se jedná}
implementation

{$R *.dfm}

procedure TForm1.bt_pripravClick(Sender: TObject);
var sirka,vyska:integer;
begin
n:=StrToInt(Edtn.Text);       {načte z edtn hodnotu pro počet sloupců}
m:=StrToInt(Edtm.Text);       {načte z edtm hodnotu pro počet řádků}
sg.colcount:=n;         {nastavení počtu sloupců pomocí edtn}
sg.rowcount:=m;         {nastavení počtu řádků pomocí edtm}
sirka:=sg.DefaultColWidth;
vyska:=sg.DefaultRowHeight;
sg.Width:=n*sirka+n+4;        {nastavení šírky buňky}
sg.Height:=m*vyska+m+4;       {nastavení výšky buňky}
bt_nacti.Visible:=true;        {po nachystání stringridu se zobrazi
                                tlačítko pro naplnění stringridu}
end;

function soucet(j:integer; var a:Tmat):integer;
var i:integer;
begin
Result:=0;
for i:=1 to m do
  if a[i,j] mod 2=0 then
    Result:=Result+a[i,j];
end;

procedure TForm1.bt_nactiClick(Sender: TObject);
var i,j:integer;
begin
for i:=1 to m do
for j:=1 to n do
begin
sg.cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
for i:=1 to 10 do
for j:=1 to 10 do
a[i,j]:=random(10)+1;

end;

procedure TForm1.bt_konecClick(Sender: TObject);
begin
close;
end;

procedure TForm1.bt_soucetClick(Sender: TObject);
var result:integer;
begin
label1.caption:=IntToStr(result);
end;

end.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý