Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
dobrý den,
Chtěl bych vás poprosit jestli by jste mi pomohli s přikladem v progamu delphi.Sem v tom uplný začátečník a nevím si rady.
Zadání zní:
Vytvořte pro danou celočíselnou obdelníkovou matici A(m,n) tzv. vektor řádkových maxim B(m).
Vstup:m,n,matice A
Výstup:Vektor B
Děkuju za odpověd.
Offline
↑ plisna: program mam,ale nahrubo,mam tam prebivajici procedury a nevim,ktery mam vymazat a take,jak do toho dopisu ten vektor B,tady je ten program:
program maticeblog;
{I-}
for i := 1 to N do
for j := 1 to M do readln (mat [i, j])
{ repeat
readln (sloupec [i] );
err:= IOResult;
if err <> 0 then writeln ('Chyba na vstupu - opakuj zadani');
until err = 0; }
{$I+}
end;
//+vypis matice
procedure pismat ( mat : MATICE; N, M : integer; text : string);
var i, j : integer;
begin
writeln (text);
for i := 1 to N do
begin
for j := 1 to M do write (mat[i, j] : 8);
writeln
end;
end; //-pismat
//+transpozice
procedure transp (var mat : MATICE; N,M : integer);
var i, j, pom : integer;
begin
for i := 2 to N do
for j := 1 to i - 1 do
begin
pom := mat[i, j]; mat[i, j] := mat[j, i]; mat[j, i] := pom
end;
end;
procedure generuj (var A : MATICE; N,M : integer);
var i,j : integer;
begin
for i := 1 to N do
for j := 1 to M do A[i, j] :=i + j;
end;
procedure diagmat1 (var mat : MATICE; N : integer);
var i, j : integer;
begin
for i := 1 to N do
for j := 1 to N do
if i = j then mat [i,j] := 1 else mat [i,j] := 0;
end;
procedure naplnmat (var mat :MATICE; N, M, k : integer);
var i, j : integer;
begin
randomize;
for i := 1 to N do
for j := 1 to M do mat [i, j] := random(k);
end;
function maxsl (mat : matice; N, M, K : integer): integer;
var i,max : integer;
begin
max := - maxint;
for i := 1 to N do
if max<mat [i, k] then max := mat [i, k]
end;
//vlastni prikazy programu
var N, M, K : integer;
var mat1, mat2, A, B : MATICE;
begin
writeln ('zadej N '); readln (N);
writeln ('zadej M '); readln (M);
ctimat (mat1, N, M); //obdelnikova
pismat (mat1, N, M, 'matice mat1');
transp (mat1, N, M);
pismat (mat1, N, M, 'matice mat1 transponovana');
generuj (A, N, M);
pismat (A , N, M, 'matice A - i+j');
diagmat1 (mat2,N);
pismat (mat2, N, N,'vypis dig.matice mat2 s 1 na diagonale');
naplnmat (A,N,M,101);
pismat (A,N,M,'Matice A - nahodne hodnoty');
K := 2;
writeln ('Max hodnota v ', K:2,'sloupci matice A je ',maxsl (A,N,M,K));
readln
//transpozice vyvolani
end.
Offline
Tak předně je to domácí úkol na základě toho, co jste probírali a stačilo jen dávat pozor. Dotazy byly zodpovídány a podklady pro pomalejší a nepozorné máte. Dále je sprosté rozhodit dotaz na několik webů bez vlastní snahy o řešení. Ne, obšlehnutí cizího programu, kterému ani zbla nerozumíš, se nepočítá.
Ale k věci. Co je matice a řádkové maximum víš? Takže - pro reprezentaci matice použiješ (nejlépe) dvojrozměrné a pro ten vektor jednorozměrné pole. Inicializuješ nebo načteš tu matici (to pole). Pak v cyklu projdeš jednotlivé řádky matice a pro každý najdeš nejvyšší hodnotu, kterou uložíš na odpovídající pozici do vektoru (to druhé pole). Nakonec vypíšeš ten vektor.
Offline