NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Tereza Burbová:14.1.2017 15:47

Ahoj, mohli byste mi prosím pomoct s touto úlohou? Moc děkuji

 
Odpovědět
14.1.2017 15:47
Avatar
vojta3310
Člen
Avatar
Odpovídá na Tereza Burbová
vojta3310:15.1.2017 10:48

Ahoj, v pascalu moc neumím, ale pokusím se pomoct nějakým pseudokódem.
Protože 365 na n je vždy kladné můžu tím vynásobit nerovnici bez změny znaménka. a pak budu jen násobyt a porovnávat v cyklu, protože nevím jak n vyjádřit.

function nasob(n)
        d=1
        for i := 365 downto (365-n+1) do
                d=d*i
        end
        return d
end

n=0
p=vstup
a=nasob(n)

while not(365^n >= a ) do
        n=n+1
        a=nasob(n)
end

print(n)

Nejsem si jistý jestli to tak bude fungovat a určitě by to šlo napsat i jednodušeji, ale snad ti to pomůže.

 
Nahoru Odpovědět
15.1.2017 10:48
Avatar
Odpovídá na vojta3310
Tereza Burbová:15.1.2017 12:42

Moc děkuju a mohla bych ještě poprosit o okomentování toho kódu? Vůbec ne nevyznám ve funkcích - co je parametr, co je proměnná

 
Nahoru Odpovědět
15.1.2017 12:42
Avatar
vojta3310
Člen
Avatar
Odpovídá na Tereza Burbová
vojta3310:15.1.2017 19:04

Pokusil jsem se to přepsat do pascalu, ale nemám žádný kompilér a ten co jsem našel online se choval poněkud divně, tak jsem nevyzkoušel jestli to vážně funguje, možná tam bude problém s velikostí proměnných.

Uses Math;


function nasob(b:integer):longint;   {virobím fci na vypočtení citatele pro pro hodnotu kterou dostane parametrem do promené b}
var
result:longint;    {definice místních proměných}
i:integer;
begin
    result:=1; {do výsledku dám 1 abych mohl postupne násobit}
    for i := 365 downto (365-b+1) do  {postupně pri i = 365 až i = 365-n+1    násobím (o rádek níž) }
        result:=result*i;
end;    {proměnná result se automaticky vrací jako vsledek fce}

function nejmensipocetucas(p:real):integer;  { tvoje připravená fce která dostane parametrem hodnotu do proměnné p}
var
n, result:integer;
a:longint;              {definyce pomocných proměnných}
begin

{místo pro tu podmínku co máš na obrázku   na ověření vstupu}


n:=0;
a:=nasob(n);  {hodnota čitatele jestliže nikdo nepříjde  (n=0)}

while not(power(365,n)*p >= a ) do  {budu testovat tak dlouho dokud se nerovnice nesplní  (minule jsem zapoměl *p)}
    n:=n+1;  {při každém pokusu zvětším n o 1}
    a:=nasob(n); {vypočtu čitatel         při dalším pokusu ho zase porovná}
end.

writeln(n);  {vypíšu vísledek}
result:=n;   {a taky ho vrátím z funkce}
end;
 
Nahoru Odpovědět
15.1.2017 19:04
Avatar
Odpovídá na vojta3310
Tereza Burbová:17.1.2017 6:49

Moc děkuji

 
Nahoru Odpovědět
17.1.2017 6:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.