Child pages
  • Egy olyan algoritmust keresek, ami összead beolvasott számokat és átlagolja az összegüket!
Skip to end of metadata
Go to start of metadata

Sziasztok!

Nemrég kezdtem el java programozással foglalkozni és magával a programozással is. Kicsit nehézkesen megy a dolog, mert magyarul nem nagyon találok kezdőknek szánt anyagokat és szeretném az alapokat jól megtanulni, hogy stabilan tudjak rá építkezni.

Egy olyan programot kaptam feladatként, aminek azt kéne csinálnia, hogy a felhasználótól bekért számokat összeadja a program, majd ezek összegét átlagolja és ha nullát ír be a felhasználó, akkor a program futása befejeződik. Mivel nincs laptopom, így az iskolai gépen kezdtem el ezt a programot írni, de nem mentettem el, szóval itthon is újra elkezdem majd. Addig eljutottam, hogy bekérjem a számokat, ha nullát nyom a felhasználó, akkor hagyja abba a program a futást, de sajnos sehogy se jöttem rá arra, hogy hogyan kéne megvalósítani azt az algoritmust, ami összeadja majd átlagolja az összeget.

Ebben kérném a segítségetek és abban is, ha esetleg valaki tud egy jó kis kezdőknek szánt az alapoktól kezdődő tanítóanyagot, akkor az kérem ossza meg itt kommentben! (smile)

Segítségeteket előre is köszönöm!

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

11 Comments

  1. Hova tároltad le a számokat? Listába vagy tömbbe?

  2. Tömbbe tároltam őket, ez tűnt nekem egyszerűbbnek. Pont aznap vettük a 2 dimenziós tömböket és a listát is.

    1. A tömb elemeinek száma tükrözi azt, hogy mennyi szám van benne? Vagy lefoglaltál előre egy jó nagy tömböt és ha belefér, akkor öröm van, ha meg nem, akkor megáll a program? (smile)

      Egy pár soros forráskódot írhatnál ilyenkor, sokat könnyít a helyzeten.

  3. Szia, Gábor!

    Kicsit megmásítottam a programot és az lenne a kérdésem, hogy tömb használata nélkül eltudná e végezni a feladatát? Köszi a segítséget! (smile)

    public static void main(String[] args) {
      // Készíts egy olyan programot, ami a beolvasott számokat összeadja,
      // majd ezeknek az összegét átlagolja!
    
      Scanner be = new Scanner(System.in);
    
      System.out.println("Kérlek írj be számokat!");
      System.out.println("A beírt számok összegét összeadom és átlagot vonok belőle.");
      System.out.println("Számok: ");
    
      int szamok = be.nextInt();
    
      if (szamok == 0){
        System.out.println("Ha nullát írsz be a program befejezi a futást és elvégzi a feladatát!");
        System.exit(0);
      } else{
      }
    }
    1. Ez azért kevés lesz... ebben nincs ciklus, ami megállna, ha a beolvasott szám értéke nulla... egyébként lehet átlagot számolni tömb használata nélkül, mert ugye csak össze kell adni, illetve meg kell számolni a beolvasott számokat a két értékből számolható az átlag... (smile)

  4. Értem. 

    És tudnál segíteni a program elkészítésében?

    Mert én még nem sokat konyítok hozzá. (big grin)

    Te hogy csinálnád?

    1. Segíteni tudok, helyetted megírni nem.

  5. Egy dolog az algoritmus megfogalmazása, egy másik dolog, hogy lekódold java nyelven. (smile)

    Először találd ki az algoritmust és írd le, akár szövegesen, magyarul.
    Ha az megvan és helyes is, onnan már sokkal könnyebb lesz a programot is megírni, vagy legalább konkrét kérdést tudsz majd feltenni.
    Algoritmus nélkül nem sokra mész a tömbökkel vagy listákkal, és úgy látom, még nem találtad ki. (wink) 

    Ha az algoritmus megfogalmazásában akadtál el, abban is tudunk segíteni, de mutasd meg, merre indultál, hol akadtál el! 

  6. Sziasztok!


    Előzől postban már megmutattam az eddigi kódot, amit beírtam.

    if (szamok == 0){
        System.out.println("Ha nullát írsz be a program befejezi a futást és elvégzi a számolást!");
        System.exit(0);
      else{
      }
    Ennél a résznél akadtam meg. Nem tudom, hogy hogyan tudnám azt leírni, hogy bármennyi számot beírok pl. : 101, 123, 7, 5, 1040, 10010, 100001 stb... korlátlan mennyiségben és ezek a számok bármilyen számjegyűek lehetnek, addig, amíg az integer korlátját át nem lépik. Ezeket a számokat a program összeadná és a számoknak az összegéből megcsinálna egy átlagolás műveletet is. Szóval két lépésből állna(eddigi tudásom szerint (big grin), javítsatok ki, ha nem) az algoritmus. Az összes szám összeadásából és ezeknek a számoknak az összegének átlagszámításából. Azt nem tudom megcsinálni, hogy a beírt számokat a program összeadja(legyen ez akármennyi szám a korlátig). Az átlag kiszámítására meg olyasmi kéne, ami megvizsgálja, hogy mennyi számból jött ki az összeg, pl ha 5 számot adok össze, akkor 5-tel csinálja az átlagszámítást. (Ha jól emlékszem az átlagszámítás  úgy működik, hogy összeadod a számokat, megnézed mennyi szám alkotja az összeget és elosztod(ide nem találom a megfelelő kifejezést (big grin)). Ha 5 számból jött ki az összeg, akkor 5-tel osztod el az összeget, hogy megkapjad az átlagát.)
    Kb. ennyiből állna a dolog.
    Az else részbe szeretném megoldani ezt a számítást, ha ez lehetséges, ha nem, akkor nyitott vagyok bármire! (big grin)
    Kicsit még keverem a szakszavakat, így azokat inkább kihagynám. De ahogy Gábor is említette fentebb, hiányzik még az a ciklus is, ami megoldaná azt, ha nullát gépelek be, akkor a program elvégzi a számolást. Google segítségével írtam oda azt a System.exit(0); dolgot, azt gondoltam, hogy ennyi elég a nulla letudására.
    Még az oldala(d)(tokat) nem nagyon néztem át. Van valahol olyan szekció, ahol a java nyelv szakszavait taglaljátok?
    A segítséget előre is köszönöm! (smile)
  7. Szándékosan írtam, hogy előbb az algoritmust fogalmazd meg és írd le és amíg ez nincs meg, addig ne foglalkozz a java forráskóddal. (smile)
    A hozzászólásodból arra következtettem, hogy az algoritmus sincs egyben a fejedben, így szerintem azt sem tudod biztosan, a problémádat mi jelenti. A java szintaxisa, vagy az algoritmus megfogalmazása. Először csak egy problémával foglalkozz. Ha megoldottad, lépj tovább! (smile)

    Két egyszerű megközelítéssel élhetsz az algoritmust illetően.

    1. Lista, vagy tömb használata. Igazából ehhez a feladathoz fölösleges. Nincs szükségünk a beírt számokra, csak az összegre és a darabszámra.
    2. Összeg és darabszám tárolása. Ez az egyszerűbb, használjuk ezt!

     

    Az algoritmus tehát:

    1. hozzunk létre egy változót, amiben az összeget fogjuk tárolni. a kezdeti értéke legyen 0. Legyen a neve osszeg.
    2. hozzunk létre egy változót, amiben a beírt számok darabszámát fogjuk tárolni. legyen a kezdeti értéke 0. Legyen a neve darab.
    3. hozzunk létre egy változót, amiben az aktuálisan beírt számot fogjuk tárolni. nincs szükség kezdeti értékre. Legyen a neve aktualisSzam.
    4. olvassunk be egy számot a bemenetről az aktualisSzam változóba.
    5. ciklus, amíg az aktualisSzam változóban nullától különböző érték van
      1. az összeghez adjuk hozzá az aktualisSzam értékét
      2. a darab változó értékét növeljük eggyel
      3. olvassunk be még egy számot az aktualisSzam változóba a bemenetről (ez ugye felülírja az előzőleg beletett számot!)
      4. ciklusmag vége
    6. ha a darab változó értéke 0
      1. nem tudunk átlagot számolni, mert a felhasználó által beírt első szám 0 volt. írjuk ki, hogy "nem írtál be számot!"
    7. különben
      1. hozzunk létre egy változót az átlagnak. Legyen a neve atlag.
      2. az atlag változóba tegyük bele az osszeg / darab hányados értékét.
      3. írjuk ki a kimenetre, hogy "az átlag: " + atlag változó értéke
    8. program vége

     

    Na ez egy algoritmus. Nincs benne java kód, sem semmilyen programnyelv. Magyar mondatok.
    Ha ezt érted, akkor már nekiláthatsz ezt az algoritmust lekódolni java nyelven. Mivel tudod lépésről-lépésre, mit kell csinálnod, így már jobb kérdéseket is tudsz feltenni a szintaxist illetően. Egyébként a fenti algoritmus minden egyes sora egy java programsor lesz (kivéve a 8., mert nincs szükség kilépési parancsra). (wink)

     

  8. Aha. Így már írtam mi az algoritmus. (big grin)

    Köszi szépen. Szerintem a ciklust hittem az algoritmusnak és ez volt a gond. Azért írtam azt a hsz-t is, mert nem tudtam, hogy ez az algoritmus, de így már világos. 

    Köszi szépen mégegyszer! (smile)