Eksempel 2. Sammenligning og forgrening.
Der ønskes udarbejdet et program, som kan bruges ved beregning af gennemsnitshøjden for eleverne i klassen. De enkelte elevers højde indlæses via skærmterminalens tastatur. Når alle højder er indlæst, angives dette overfor programmet ved indtastning af tallet 0.
Indtast elevens højde i cm (stop = 0): 170 Indtast elevens højde i cm (stop = 0): 180 Indtast elevens højde i cm (stop = 0): 190 Indtast elevens højde i cm (stop = 0): 0 Gennemsnitshøjden er beregnet til: 180
Gennemsnit: Summen af tal (højder) / Antallet af tal (elever)
Vi har tidligere lavet en generel rutine til indlæsning af heltal, så den rutine genbruger vi selvfølgelig i dette eksempel:
static int laesTal(string enTekst) { int tal; string input; Console.Write(enTekst); input = Console.ReadLine(); tal = Int32.Parse(input); return tal; }
Af drejebogen fremgår det, at indlæsningen af tal skal gentages indtil tallet 0 er indtastet. Dette peger på et sentinel-styret loop (WHILE). Af hensyn til beregningen af gennemsnit skal der bruges to tælleværker: En sum til opsummering af højder og et antal til opsummering af antal elever. Begge tælleværker nulstilles inden loopet. Efter loopet beregnes og udskrives gennemsnittet.
class Program
{
static int laesTal(string enTekst)
{
int tal;
string input;
Console.Write(enTekst);
input = Console.ReadLine();
tal = Int32.Parse(input);
return tal;
}
static void Main(string[] args) { int antal = 0; int sum = 0; int hoejde; float gsnit; hoejde = laesTal("Indtast elevens højde i cm (stop = 0): "); while (hoejde > 0) { antal++; sum = sum + hoejde; hoejde = laesTal("Indtast elevens højde i cm (stop = 0): "); } if (antal > 0) { gsnit = (float)sum / antal; Console.WriteLine("Gennemsnitshøjden er beregnet til: {0:F}", gsnit); } else Console.WriteLine("Antal er 0 - gennemsnit kan ikke beregnes"); Console.ReadLine(); } }