Ahoj mám ukol který mi dělá potíže :
udělat funkci v maximě, kde když vložíte 3 hodnoty tak mi musí vypsat kolik hodnot je rovno nule.
urcinulu(a,b,c):=
snažil jsem se kreslit vývojový diagram, ale nějak se pletu asi v podmínkách, které to má obsahovat. díky za pomoc
Offline
a, b, c jsou cisla nebo vyrazy? Pokud vyrazy tak neni sance, pokud cisla, tak bych je nejdriv seradil podle velikosti.
Offline
Zdravím, nejjednodušeji to jde s postupným testováním podmínky.
Pomůžeme si novou proměnou kde si budeme ukládat mezivýsledky (počet hodnot rovnající se nule):
KolikNul(A,B,C):=block([N:0],
if is(A=0) then N:N+1,
if is(B=0) then N:N+1,
if is(C=0) then N:N+1,
N
);Jde to napsat i do jednoho řádku bez pomocné proměnné:
KolikNul(A,B,C):=apply("+",maplist(lambda([z],if is(z=0) then 1 else 0),[A,B,C]));Nebo nebo bez použití podmínky if s využitím funkce signum a abs:
KolikNul(A,B,C):=apply("+",map(lambda([z],1-signum(abs(z))),[A,B,C]))Offline
Ještě mě napadlo, že by se dala použít smyčka for:
KolikNul(A,B,C):=block([N:0], for z in [A,B,C] do if is(z=0) then N:N+1, N);
Offline