Úloha č. 1


Název úlohy: Barel vody
Datum: 20.10.1997
Obtížnost: Z
Předpokládané znalosti: příkaz přiřazení, zákl. operace nad reálnými čísly, procedury pro V/V operace, příkaz cyklu repeat


Zadání
Výprava odvážných cestovatelů se vydala napříč Saharou. Utábořili se v poušti, kde mají k dispozici barel s vodou. Je zadána doba, po kterou musí voda vystačit, počet členů výpravy a jejich denní spotřeba. Dále uvažujme, že každý z výpravy má svého koně, který má denní spotřebu právě dvojnásobnou, než jeden člen výpravy.
Nech program pro zadané hodnoty vypíše, jaký průměr musí mít zásobovací barel, víme-li, že lze zaplnit pouze do výšky 1,25 metru.

Bližší popis

  1. doba bude vyjádřena počtem dní
  2. denní spotřeba bude zadána v litrech
  3. maximální počet členů výpravy je 50 (podmínka)
  4. nech je výsledek průměru vypsán v centimetrech

Diskuse k řešení
  1. Označme: dobu .... d, počet členů .... p, objem potřebné vody .... V, průměr válce .... dv, objem barelu .... Vb a denní spotřebu .... ds.
    konstanta h=1,25 .... výška vody v barelu
  2. Na začátku programu musíme zajistit vstup hodnot d, p a ds. Vstup hodnot provedeme standardním příkazem vstupu readln. Za zmínku snad stojí, jak zajistit, aby proměnná p byla v požadovaném intervalu <1;50>. Na to lze použít cyklus repeat.
  3. Dále musíme spočítat celkový objem vody, kterou budou členové výpravy potřebovat. Ten získáme tak, že: počet členů výpravy vynásobíme trojnásobkem denní spotřeby (1 ds - cestovatel, 2 ds - jeho kůň) a to celé ještě vynásobíme počtem dní. Tedy:
    V=p.3.ds.d [l]
  4. Vztah pro výpočet objemu válce je Vb=Pi.r2.h [m3], konstanta Pi je v TP předdefinovaná, h=1,25 (viz zadání). Abychom získali Vb také v litrech, je třeba jej vynásobit tisícem.
  5. Shrnu-li body 3, 4, dostaneme, že p.3.ds.d = Pi.r2.h.1000 vyjádříme dv: (dv=2r)
    dv=2.p.3.ds.dPi.h.1000
  6. Vypočtený dv je v metrech, do výsledku již stačí dv podělit stem, abychom získali výsledek v centimetrech.

Řešení
program Barel_vody;
const MaxOsob=50;
var d, p, ds: integer;
      dv: real;
BEGIN
write(' Zadejte dobu a denní spotřebu: ');
readln(d,ds);

repeat
     write(' Zadejte počet členů výpravy: max.',MaxOsob);
     readln(p);
until (1<=p) and (p<=MaxOsob);
dv:=2*(sqrt((p*3*ds*d)/(Pi*h*1000)));
writeln('Barel musí mít průměr: ',dv/100:5:2,' cm');
END.



[Archív] [Změna kódování]