Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 29. 10. 2013 10:23

svobis
Příspěvky: 48
Reputace:   
 

wxMAXIMA POČET NUL

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

 

#2 29. 10. 2013 12:51

kaja.marik
Veterán
Příspěvky: 1915
Reputace:   57 
 

Re: wxMAXIMA POČET NUL

a, b, c jsou cisla nebo vyrazy? Pokud vyrazy tak neni sance, pokud cisla, tak bych je nejdriv seradil podle velikosti.

Offline

 

#3 29. 10. 2013 18:22

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 920
Reputace:   63 
 

Re: wxMAXIMA POČET NUL

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):

Code:

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é:

Code:

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:

Code:

KolikNul(A,B,C):=apply("+",map(lambda([z],1-signum(abs(z))),[A,B,C]))

LibreOffice Verze: 25.8.4.2, Maxima 5.49.0 (SBCL)

Offline

 

#4 29. 10. 2013 18:25

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 920
Reputace:   63 
 

Re: wxMAXIMA POČET NUL

Ještě mě napadlo, že by se dala použít smyčka for:

Code:

KolikNul(A,B,C):=block([N:0], for z in [A,B,C] do if is(z=0) then N:N+1, N);

LibreOffice Verze: 25.8.4.2, Maxima 5.49.0 (SBCL)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson