Órai feladatok megoldása

1. feladat: Írjunk egy olyan szundi() nevű függvényt, amelyet meghívva kiírja az eddigi meghívások számát. Ha viszont több mint 5-ször hívtuk meg, akkor csak annyit írjon ki a képernyőre, hogy 'ébresztő'. A függvénynek ne legyen kimenete.

function szundi()

persistent hivasokszama

if isempty(hivasokszama)
    hivasokszama=1;
    fprintf('Ez az első hívás \n');
elseif hivasokszama<5
    hivasokszama=hivasokszama+1;
    fprintf('Ez a %d. hívás \n',hivasokszama);
else
    fprintf('Ébresztő\n');
end

2. feladat: Írjunk olyan függvényt, amely visszaadja az összes eddigi meghívásakor bementeként kapott számok átlagát.

function at=atlag(x)

persistent szamok
persistent darab

if isempty(szamok)
    szamok=x;
    darab=1;
else
    szamok=szamok+x;
    darab=darab+1;
end


at=szamok/darab;

3.feladat: Írjunk olyan függvényt, amelynek bemenete egy sztring. A függvény nyissa meg az ilyen nevű fáljt, majd olvassa ki a benne tárolt összes számot. Tudjuk, hogy a fájlban szereplő számok mind egészek, egy sorban egy szám van, a fájlban a számokon kívűl nincs más látható karakter. A fájlról feltehetjük, hogy megtalálható a munkakönyvtárban. A függvény visszatérési értéke legyen a számok átlaga és szórása.

function [atl, szor]=statok(fajlnev)

szamok=dlmread(fajlnev);
atl=mean(szamok);
szor=std(szamok);

4. feladat: Írjunk olyan filed(s) nevű függvényt, melynek bemenete egy txt fájl teljes neve sztring- ként. Ebben a fájlban csak egész számok vannak, soronként azonos, de ismeretlen darabszámú. Olvassuk be egy megfelelő méretű mátrixba a számokat, majd konvertáljuk a legkisebb helyet foglaló olyan egész típussá a mátrixot, melybe még adatvesztés nélkül elférnek. A kimenet legyen ezen mátrix.

function kimx=filed(s)


azon=fopen(s,'r');
sor=fgets(azon);
mx=[];

while ischar(sor)
    mxsor=str2num(sor);
    mx=[mx; mxsor];
    sor=fgets(azon);
end

le=max(max(abs(mx)));

if le<=127
    kimx=int8(mx);
elseif le <=32767
    kimx=int16(mx);
elseif le<= 2147483647
    kimx=int32(mx);
else
    kimx=int64(mx);
end