Problemløsning og programmering

Eksempel 2. Sammenligning og forgrening.

Eksempel 4. Tabeller.

Eksempel 3. Gentagelse og opsummering.

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.

Opstilling af drejebog

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

Formler

Gennemsnit: Summen af tal (højder) / Antallet af tal (elever)

Generelle rutiner

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;
}

Programmets struktur

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();
  }
}
Oprettet 13. januar 2008
Opdateret 13. januar 2008