Gyakorlati alapok
Bekért számok átlaga
Ebben a fejezetben folyamatosan bekért számok egyszeri átlagát számoljuk és írjuk ki.
Átlagszámításkor a számsorozat összege van elosztva a számsorban szereplő számok mennyiségével. Ezt a fajta átlagot nevezik számtani vagy aritmetikai középértéknek is.
Az implementáció szinte teljesen azonos a Bekért számok összege című fejezetben foglaltakkal, egyetlen kivétellel: a folyamatos összegzés mellett (osszeg += szam) számolnunk kell a bekért számok mennyiségét is (szamlalo++). A probléma azonban, hogy noha 0 szám esetén lezáródik a sorozat, a számláló értékét ez is növeli +1-gyel, ennek kompenzálására az átlagszámítás így módosul:
osszeg / (szamlalo-1)
Mivel az átlagszámítás mindig osztásos művelet, érdemes a benne szereplő adattagokat double típusra deklarálni, hiszen int adattípus esetén adatcsonkolódás léphet fel:
double osszeg = 0;
double atlag = 0;
Ezért biztonságképpen -bár a kód egyszerűbben is működne-, az átlagszámítás műveletét külön választottam:
atlag = osszeg /(szamlalo-1);
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int szam = 0;
int szamlalo = 0;
double osszeg = 0;
double atlag = 0;
do {
System.out.print("Adjon meg egy
számot vagy kérje az átlagot 0-val!\n");
String szamString = in.nextLine();
szam = Integer.parseInt(szamString);
osszeg += szam;
szamlalo++;
} while (szam != 0);
System.out. println("Összeg: " + osszeg);
atlag = osszeg /(szamlalo-1);
System.out. println("Átlag: " + atlag);
}
}
Végeredmény (például):
Adjon meg egy számot vagy kérje az összeget 0-val!
5
Adjon meg egy számot vagy kérje az összeget 0-val!
6
Adjon meg egy számot vagy kérje az összeget 0-val!
7
Adjon meg egy számot vagy kérje az összeget 0-val!
8
Adjon meg egy számot vagy kérje az összeget 0-val!
9
Adjon meg egy számot vagy kérje az összeget 0-val!
0
Összeg: 35.0
Átlag: 7.0
Láthatjuk azonban, hogy az algoritmus sok egyéb feltételt még nem ellenőriz le, többek közt rossz karakterek begépelése, negatív számok, stb. Ennek lekezelése már magasabb szintű programozási feladat.