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 jsem se zeptat a poprosit o pomoc, jak vygeneruji čísla. Příklad: Napište program, který vygeneruje 1000 trojic čísel - souřadnic (x,y,z) náhodných bodů, které leží v krychli se středem v bodě (0,0,0) s hranou o velikosti 10. Poté program zjistí, kolik z těchto bodů leží uvnitř koule se středem v bodě (0,0,0) s poloměrem 5. Prosím o pomoc a radu. Vím, že body jsou od -5 do +5 po všech souřadnicích. Vím, že 1000 kombinací čísel x,y,z jsou vlastně všechny možnosti souřadnic pro danou krychli. Vím, jak spočítat objem jak krichle, tak koule. Ale toto všechno pouze matematicky. Mnohokrát děkuji za jakoukoliv pomoc.
Offline
Offline

↑ Honzc: Díky. já to mám napsat na papír formou:
program generovani_cisel
var x,y,z,i,p:integer;
begin
. použít umím writeln, readln, if .. then .. else
.
.
.
.
end.
Myslel jsem, že body nacpu do objemu krychle. Vypočítám "obecně" objem koule a odečtu od objemu krychle. Body, co budou v objemu koule, tak tam jsou. Ale jak na to? Možná na to jdu špatně. Z toho co jsi mi napsal nejsem moc moudrý. Ta odmocnina sqrt(x*x+..... //podmínka pro kouli Jak jsi přišel na tu odmocninu? Díky moc za všechny rady.
Offline
↑ LRJ1:
Rovnice kulové plochy se středem v bodě
a poloměrem
je:
A ta podmínka z ní vychází. Všechny body jejichž vzdálenost od počátku s.s. je menší nebo rovna 5 totiž leží uvnitř té koule. Můžeš ji samozřejmě napsat i takto:
If
pak připočti další bod (takový bod leží uvnitř nebo na povrchu koule)
To generování náhodných bodů je hned nad tím. Samostatně generuješ vždy x-ovou, y-ovou a z-vou souřadnici bodu. for i := 1 to 1000 do značí, že takových bodů (náhodných) vygeneruješ právě tisíc.
A to poslední Edit1.Text := IntToStr(p); jenom zobrazuje kolik jich z těch tisíve vygenerovaných leží uvnitř koule.
Jestli to máš dělat v Pascalu pak
ten řádek přepiš jednoduše na WriteLn(p);
Jinak to všechno zůstane stejné.
Offline