C program, bekér 1 n számot (évszám), ebből kell tehenek számát kikövetkeztetni. Hogyan? :'D
A lenti szövegben bocsi az ékezetekért, csak így tudtam bemásolni.
Na most nekem C kód nem kell, csak arra nem tudok rájönni hogy hogyan kapjuk meg a tehenek számát az évszámból, nem tudom felírni a képletet. Ha valaki kisegít azt megköszönöm :)
J´ozsi b´acsi egyszer ´ugy gondolta, hogy tejgazdas´agot hoz l´etre. Miut´an kiv´altotta az ˝ostermel˝oit, r¨ogt¨on v´as´arolt is egy borj´ut, amit nagy odaad´assal gondozott.J´ozsi b´acsi teheneir˝ol azt kell tudni, hogy h´arom ´eves korukt´ol kezdve ´evente egy borjat ellenek ´es az odaad´o gondoskod´as hat´as´ara nagyon sok´aig ´elnek. Mivel J´ozsi b´acsi nagyon szereti az ´allatokat, ´ıgy egyetlen tehenet sem adott el, vagy vitt v´ag´oh´ıdra, ´ıgy a gazdas´ag ´evr˝ol-´evre sz´epen gyarapodott. ´Irj f¨uggv´enyt, amely kisz´amolja, hogy melyik ´evben h´any tehene volt J´ozsi b´acsinak. A f¨uggv´eny egy 50-n´el nem nagyobb, n nemnegat´ıv eg´esz sz´amot kap param´eter¨ul, amely az els˝o borj´u v´as´arl´as´at´ol eltelt ´evek sz´am´at reprezent´alja. A f¨uggv´eny az n-edik ´evben a gazdas´agban l´ev˝o tehenek sz´am´aval t´erjen vissza. Hib´as input eset´en, azaz amennyiben n negat´ıv, akkor a visszat´er´esi ´ert´ek legyen -1. T´etelezz¨uk fel, hogy J´ozsi b´acsi ismer n´eh´any tr¨ukk¨ot, amely hat´as´ara csak tehenek sz¨uletnek a gazdas´agban. K´odold le a f¨uggv´enyt C nyelven! A f¨uggv´eny fejl´ec´en ne valtoztass! A f¨uggv´eny inputjai a param´eterek, outputja a visszat´er´esi ´ert´ek. A f¨uggv´eny nem v´egez IO m˝uveleteket!?
Szerintem a feladat kitalálója nem azt szerette volna, hogy képletet írj.
Egy return a*n*n+b*n+c; függvény megírása nem egy nagy feladat, és te az a,b,c értékét szeretnéd megtudni tőlünk.
Inkább "szimuláld" a születéseket.
Pl vegyél fel egy 50 elemű listát.
Ez a lista tartalmazza az adott korú tehenek számát.
For ciklus az évek számáig.
Minden egyes lépésben mozgasd a darabszámokat a következő helyre (öregednek a tehenek)
És vedd fel a 0, elemhez az újonnan születetteket (amit ugye minden 3. szám összeadásával kapsz)
De ez csak egy ötlet, lehet máshogy is.
Nyilán, ha csak egy képlet eredményét adod vissza az nem programozás...
Bocs, azt hittem 3 évente zülnek.
Szóval ez: "amit ugye minden 3. szám összeadásával kapsz"
hibás, minden számot össze kell adni a 3. helytől.
És nem 50, hanem legalább 51 hosszú legyen a tömb.
Mondjuk ezek csak apróságok, a lényegen nem változtat.
Amúgy pedig itt képlet, ha nagyon szeretnéd:
2^n - F(n) - 1
ahol F(n) az n. Fibonacci számot jelöli. Ennek is van egy egyszerű zárt képlete amit pl. Wikipedián megtalálhatsz.
Nem kell ezt túlkomplikálni. 51, meg sokezer elemű tömbök... alapvetően 4 kategóriája van a teheneknek ami minket érdekel:
- újszülött
- 1 éves
- 2 éves
- 3 éves vagy idősebb, ivarérett.
Minden évben odébbmozgatjuk a meglévő tehenek életkorát, az újszülöttből 1 éves lesz, az 1 évesből 2 éves, a 2 évesből 3 éves, a 3 éves meg szül egy újszülöttet. Ennyit kell számontartani.
function calculateCows(year)
{
    let age_limit = 3;
    let cows = new Array(age_limit+1);
    for(let i=1; i<=age_limit; i++)
    {
    cows[i] = 0;
    }
    cows[0] = 1;
   
    for(let i=1; i<=year; i++)
    {
        let newborn = cows[age_limit];
        cows[age_limit]+= cows[age_limit-1];
        for(let j=age_limit-2;j>=0;j--)
        {
            cows[j+1] = cows[j];
        }
        cows[0] = newborn;
        console.log(cows);
    }
    return cows.reduce((carry, elem)=>carry+elem,0);
}
Ez JS-ben van megírva, de a lényeg innen is látszik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!