Moc bych potřeboval bych pomoc s jedním úkolem do školy. Před měsícem jsem nevěděl, že něco jako Delphi existuje a dnes po mě chtějí odevzdání nějakého úkolu, se kterým si nevim vubec rady. Tepvrve se s Delphi7 seznamuju a nejpozději do měsíce to musim odevzdat. Budu vděčnej za jakoukoliv pomoc, radu, návod. Předem díky Petr
Zadání úkolu:
Naplňte automaticky obdélníkovou matici A(m x n) náhodnou celočíselnou hodnotou v rozsahu 0 – k, kde k je kladné číslo a určete rozdíl největšího a nejmenšího čísla.
Vstup : Celá čísla m,n,k
Výstup : Matice A, rozdíl největšího a nejmenšího čísla
Fórum › Delphi
Pomoc, pomoc s úkolem (matice v Delphi)
Z tvého zadání není jasné:
1.Má to být v Delphi nebo to má být konzolová aplikace.
2. Omezující podmínky pro m,n,k (jaká je jejich maximální hodnota)
3. Vstup má být čten ze souboru nebo zadáván na obrazovce nebo vyplněním nějakých editačních polí
4. Výstup na obrazovku nebo do souboru.
to Honzc - co mu napsat radši něco "trefnějšího" jako tohle :-D :
Jednoducha prace s polem, celociselne promenne se jmenuji integer;
pole se definuje jako
Var
pole : array[1..1000]of integer;
max,min : integer
náhodná čísla do k získáš pole[]:=Random(k)+1.
v cyklu do pole
for a:=1 to m do
for b:=1 to n do
pole[b*m+a]:= ..
do max si v podmince ulozis nejvetsi cislo
do min taky
odectes
Vstup je pres prikaz Readln(promenna);
Podobne pro vypis:
for a:=1 to m do
for b:=1 to n do
writeln(pole[]);
To o-lox:
Asi proto, abych ho nemátl jako ty.
V tvé radě je toho až moc zavádějícího:
Např.:1. Random(k)+1 rozhodně nesplní podmínku vstupu, že k=<0,k> pro k celá čísla
Správně tedy Random(k+1)
2. Pokud vím, tak matice typu mxn je dvourozměrné pole a ne jednorozměrné jak navrhuješ
3. Zkoušel jsi si podle tvého návodu naplnit to pole (pole[b*m+a] := ...)
Asi ne, neboť bys přišel na to, že ti nezačíná indexem 1, ale indexem m+1 a následující index
je 2*m+1.
Správně by to mohlo být pole[(a-1)*n+b] := ...
4.Taky výpis matice bude zajímavý. to budou řádky s jedním číslem (tedy žádná matice typu mxn)
to Honzc>
No jo máš uplně pravdu, šít horkou jehlou je ošemetné, nepřemýšlel jsem nad tim, je to vidět, byla to - asi taková blbá kostra, na kterou se má hledět bez dalekohledu :)
K tý dvourozměrnosti - to je schválně jak to chceš udělat když se zadává ze vstupu, můžeš definovat max. nějakou hodně nadhodnocenou array[1..10000,1..10000] of integer;
To o-lox:
Např.:
Na vstupu zadáš m, n, k.
Pak natypuješ: type Tpole=array of array of Integer;
a pak proměnné:
var pole: Tpole;
i,j,maxc,minc,rozdil: Integer;
a pak mu přiřadíš délku
SetLength(pole,m,n); a máš dvourozměrné pole mxn (akorát, že začíná indexem [0,0])
a pak ho v cyklu naplníš a zrovna zapisuješ do minc a maxc minimální a maximální čísla.
minc := k+1;
maxc :=-1;
for i := 0 to m-1 do
for j := 0 to n-1 do
begin
pole[i,j] := Random(k+1);
if pole[i,j]<minc then
minc := pole[i,j];
if pole[i,j]>maxc then
maxc := pole[i,j];
end;
pak vypočteš rozdíl
rozdil := maxc-minc;
A výstup už je třeba si udělat sám (podobně jako naplnění a využitím stringu s := s+' '+IntToStr( pole[i,j]) a
procedury WriteLn(s))
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pomoc s ukolem — založil Janickaaa1919
Pomoc s úkolem v C++ — založil zaltex
Pomoc s úkolem — založil Malirka
Pomoc s ukolem — založil Veganekk
Pomoc s úkolem — založil Honza