Hatodik labor: Gyakorló óra
1. feladat: Írjunk egy olyan szorzoTabla(n,m) nevű függvényt, melynek bemenete n és m pozitív egészek, és a kimenete egy mátrix, melynek elemei a -es szorzótábla értékei.
Első megoldás ciklussal
function ki=szorzoTabla(n,m) ki=zeros(n,m); for i=1:n for j=1:m ki(i,j)=i*j; end end
Második megoldás diádszorzattal
function ki=szorzotabla(n,m)
ki=(1:n)'*(1:m);
2. feladat: Írjunk egy olyan fibonacciSzorzat(n) nevű függvényt, melynek bemenete n pozitív egész, és a kimenete a Fibonacci-sorozat n-edik és n+1-edik tagjának szorzata. (A Fibonacci sorozat elsõ és második tagja 1, és minden elem az õt megelőző két elem összege.)
Első megoldás: a sorozat összes elemének tárolásával
function ki=fibonacciSzorzat2(n) fsz=[1,1]; for i=3:n+1 fsz(i)=fsz(i-1)+fsz(i-2); end ki=fsz(n)*fsz(n+1);
Második megoldás: a sorozat összes utolsó két elemeének tárolásával
function ki=fibonacciSzorzat(n) aktualis=0; kovetkezo=1; for i=1:n osszeg=aktualis+kovetkezo; aktualis=kovetkezo; kovetkezo=osszeg; end ki=kovetkezo*aktualis;
3. feladat: Írjunk egy olyan idenJanuar(n) nevű függvényt, melynek bemenete n egy és 31 közötti pozitív egész, és kiírja, hogy idén január n-edike milyen napra esett.
function idenJanuar(n) if mod(n,7)==1 fprintf('Hétfő\n'); elseif mod(n,7)==2 fprintf('Kedd\n'); elseif mod(n,7)==3 fprintf('Szerda\n'); elseif mod(n,7)==4 fprintf('Csütörtök\n'); elseif mod(n,7)==5 fprintf('Péntek\n'); elseif mod(n,7)==6 fprintf('Szombat\n'); else fprintf('Vasárnap\n'); end
4. feladat: Írjunk olyan idosebb(ev1, ho1, nap1, ev2, ho2, nap2) nevű függvényt, melynek bemenete 6 pozitív valós szám, melyek két ember születésnapját jelentik. A kimenet legyen 0, ha egyidősek, 1 ha az első ember idősebb, 2, hogy ha a második.
Első megoldás:
function ki=idosebb(ev1, ho1, nap1, ev2, ho2, nap2) if ev1>ev2 ki=2; elseif ev1<ev2 ki=1; elseif ho1>ho2 ki=2; elseif ho1<ho2 ki=1; elseif nap1>nap2 ki=2; elseif nap1<nap2 ki=1; else ki=0; end
Második megoldás:
function ki=idosebb2(ev1, ho1, nap1, ev2, ho2, nap2) if ev1==ev2 && ho1==ho2 && nap1==nap2 ki=0; elseif ev1==ev2 && ho1==ho2 && nap1<nap2 ki=1; elseif ev1==ev2 && ho1<ho2 ki=1; elseif ev1<ev2 ki=1; else ki=2; end
5. feladat: Írjunk egy olyan hanyadikelem(v,n) nevű függvényt melynek első bemenete egy számokból álló sorvektor, a második egy valós szám. A függvény határozza meg, hogy hányadik helyen szerepel először v-ben n, a kimenet legyen ezen index. Ha nem szerepel n a vektorban, akkor a kimenet legyen -1.
function ki=hanyadikelem(v,n) for i=1:length(v) if v(i)==n ki=i; return end end ki=-1;
6. feladat: Írjunk egy olyan csere(v,a,b) nevű függvényt, melynek 3 bemenete van: egy v vektor, és két valós szám: a és b. A függvény cserélje ki v minden a-val egyenlő elemét b-re.
function w=csere(v,a,b)
w=v;
w(w==a)=b;
7. feladat: Írjunk egy olyan szamolAtlag(v) nevŰ függvényt, amelynek bemenete egy sorvektor, amelyben valós számok vannak. A függvény kimenete legyen a v vektor 0 és -1 közé eső elemeinek összege.
function ki=szamolAtlag(v)
ki=mean(v(v>-1 & v<0));
8. feladat: Írjunk olyan mennyiDb(v) nevű függvényt amely meghatározza a bemenetként kapott v vektor páratlan indexű helyein lévő egész elemeinek számát.
function db=mennyiDb(v)
v=v(1:2:end);
db=sum(v==ceil(v));