Gå til indholdet

N187 Summering: Temperaturgennemsnit

Info

Dette er en lidt større opgave der summerer interativ og procedural programmering i C#.

I denne opgave skal du skabe et program, der kan indsamle og behandle temperaturdata. Brugeren skal indtaste en række temperaturer (som decimaltal), og programmet skal derefter udregne og vise gennemsnittet af disse temperaturer. Du skal sikre, at de indtastede temperaturer er gyldige decimaltal og håndtere eventuelle indtastningsfejl.

Opret en ny tom konsolapplikation. Programmet skal:

  1. Bede brugeren om at indtaste temperaturer, én ad gangen. Brugeren skal kunne indtaste så mange temperaturer, som ønsket.
  2. Efter hver indtastning, skal programmet spørge, om brugeren vil indtaste en ny temperatur.
  3. Hvis brugeren indtaster noget, der ikke er et gyldigt decimaltal, skal programmet vise en fejlmeddelelse og bede om en ny indtastning.
  4. Når brugeren vælger ikke at indtaste flere temperaturer, skal programmet udregne og vise gennemsnittet af de indtastede temperaturer.

Brug eksempelvis en List<decimal> til at opbevare de indtastede temperaturer.

Eksempel på programkørsel

Indtast en temperatur: 21.5
Vil du indtaste en ny temperatur? (ja/nej): ja
Indtast en temperatur: 22.3
Vil du indtaste en ny temperatur? (ja/nej): nej
Gennemsnitstemperaturen er: 21.9
Klik for at se et forslag til en løsning
List<decimal> temperaturer = new List<decimal>();
bool fortsæt = true;

while (fortsæt)
{
    Console.Write("Indtast en temperatur: ");
    string input = Console.ReadLine();

    if (decimal.TryParse(input, out decimal temp))
    {
        temperaturer.Add(temp);
        Console.Write("Vil du indtaste en ny temperatur? (ja/nej): ");
        fortsæt = Console.ReadLine().ToLower() == "ja";
    }
    else
    {
        Console.WriteLine("Det indtastede er ikke en gyldig temperatur. Prøv igen.");
    }
}

if (temperaturer.Count > 0)
{
    decimal gennemsnit = BeregnGennemsnit(temperaturer);
    Console.WriteLine($"Gennemsnitstemperaturen er: {gennemsnit:N1}");
}

decimal BeregnGennemsnit(List<decimal> temperaturer)
{
    decimal sum = 0;
    foreach (decimal temp in temperaturer)
    {
        sum += temp;
    }
    return sum / temperaturer.Count;
}