jojo já si to upravil hned jak jsem to jsem vložil :-), všiml jsem si toho.
Příspěvky odeslané z IP adresy 46.183.64.–
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 :-)
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
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.
#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 :-).
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.