Hirdetés

Új hozzászólás Aktív témák

  • bucsupeti
    senior tag

    Sziasztok! Egy kis segítségre lenne szükségem. Először elmondom a szitut. Már több szemeszter óta vergődök az alap C programozással, nem szeretem, nem áll rá az agyam. Idén már pénzbe is fájt, úgyhogy megpróbálom megemberelni magam, és most igyekszem megérteni, legalább nagyon alapszinten. Úgy ahogy haladok, de persze nevetséges tudásom van, ami nem is baj, csak a zh-n vergődjek át. A következő feladatot kellene (többek közt) megoldanom, tudnátok segíteni?

    Töltsön fel egy egész típusú 100 db elemet tartalmazó tömböt páratlan számokkal 100-tól csökkenő értékkel! Adja össze a páros számú indexen levő elemek értékét! Vegye az átlagát a páratlan indexen levő tömb elemeknek!

    Megmutatom, mire jutottam: (ja, nem egész típusú a tömböm, ezt elfelejtettem figyelembe venni, ennek lehet valami hátránya? a hsz végén szóba hozom a típuskonverziót, azért, mert sok feladatnál használtunk már double-t, és akkor int-re konvertáltunk, és ez a rutin megmaradt, csak nem teljesen tiszta)

    int main()
    {
    double t[100]; unsigned int i=0, j=100, pl=0, ps=0;
    while(i<100)
    {
    t[i]=j;
    if((j%2))
    /* {
    if((j&0xF1)==0x55)
    {
    pl=pl+t[i];
    }
    }*/


    printf("%lf\n", t[i]);
    i++;
    j--;
    }
    printf("paratlan indexu elemek erteke %d", pl);


    return 0;
    }

    A tömbfeltöltés még sikerült. A program nyilván nincs kész. A gondom az, hogy ha belerakom a kicsillagozott részt, akkor egyrészt nem jó eredményt dob(úgy gondolom, hogy úgy sz*r az, ahogy van), és a tömbfeltöltést is elrontja, mert nem csak a páratlan számok kerülnek be, hanem mind.

    A logikám az volt, hogy maszkolni kéne a következő bitsort: x1x1x1x1-et, az 11111111-al, az x-ek helyén mindegy mi van, a páros bitek helyén meg 1-es ugye, mivel az kell, és amelyik j-re ez teljesül, azokat összeadja pl változóba.

    Most hogy visszanézem, kicsit belegabalyodtam, szerintem nem is j-t kell vizsgálni, de tényleg nem tudom már hogyan tovább. Ez a maszkolósdi amúgy se megy, illetve szerintem egy típuskonverzió is kéne valahova, de ahhoz sem értek.

    Valaki tud életet menteni? :B Előre is köszönök minden segítséget :R

    100-tól csökkenve 100 db páratlan szám csak úgy van, ha negatív számokat is veszünk, vagy ha egy páratlan számot többször is értékül adunk. Van valami pontosítás a feladattal kapcsolatban ezen a téren?
    Mert ha nincs akkor én úgy csinálnám hogy 99-től visszafelé indítok egy ciklust (for), úgy hogy kettesével lépked visszafelé. Tárolnám a számot az aktuális és az aktuális+1 indexű elemben.
    Ezzel kész is a feltöltés csökkenő sorrendben.
    Ezután egy újabb ciklusban feldolgoznám a tömböt. A ciklus végigmegy a tömbön és összeadogatom két változóban az elemeket. Egyikben a páros indexűeket, másikban a páratlan indexűeket. (Vedd észre, hogy mivel két egyforma elem követi egymást, ezért az összeg pontosan ugyan annyi lesz a végén mindkét változóban, mivel a tömb valahogy így néz ki: 99,99,97,97,95,95...1,1)
    Ezután kiírom a páros indexűek összegét, majd a páratlan indexűek összegét elosztom 50-el és azt írom ki (ez lesz az átlag).

    Ne erőltesd bele egy ciklusba az egészet (persze úgy is meg lehet csinálni).

    Számomra a kérdés a tömb feltöltésének pontos szabálya.

Új hozzászólás Aktív témák