===== Arrays #2 =====
==== Øvelse 1: Temperaturmåling over en uge ====
Lav et program, der først registrerer(indlæser via console) temperaturmålinger for en uge og derefter analyserer dem. Programmet skal bruge et array til at gemme syv temperaturmålinger (en for hver dag i ugen).\\
=== Programmet skal kunne: ===
- Beregne og udskrive gennemsnitstemperaturen.
- Finde og udskrive den højeste og laveste temperatur.
- Udskrive de daglige målinger i rækkefølge. (mandag til og med søndag)
* Opret først et float[] array til at gemme temperaturmålinger for ugen.
* (Du skal i denne opgave ikke benytte de indbyggede funktioner/metoder Min() og Max().)
=== Forventet Output ===
Hvis inputdataene er:
Mandag: 14.3, Tirsdag: 17.1, Onsdag: 15.6, Torsdag: 19.5, Fredag: 20.4, Lørdag: 18.9, Søndag: 16.3
Så skal outputtet være:
Temperaturmålinger for ugen:
Mandag: 14.3 °C
Tirsdag: 17.1 °C
Onsdag: 15.6 °C
Torsdag: 19.5 °C
Fredag: 20.4 °C
Lørdag: 18.9 °C
Søndag: 16.3 °C
Gennemsnitstemperatur: 17.44 °C
Højeste temperatur: 20.4 °C
Laveste temperatur: 14.3 °C
----
==== Øvelse 2 : Analyse af data fra en sensorenhed ====
CO₂-niveauer i indendørs miljøer, som klasselokaler, måles typisk i parts per million (ppm). \\
Udendørs vil man typisk finde en koncentration af CO2 i luften på ca. 380 ppm (parts per million=0,038% pr. m3), men det varierer afhængigt af årstiden.\\
Indendørs har Arbejdstilsynet sat en indikatorværdi for CO2-indhold i luften til 1000 ppm, men et klasselokale er ofte meget ujævnt belastet. Eksempelvis kan én lektion gennemføres uden afbrydelser, mens man i andre lektioner kan man have opdelt eleverne i mindre grupper. \\
Bygningsreglementet sætter en grænseværdi på 1000 ppm ved almindelig drift i skoler og daginstitutioner samt på kontorer. For eksempel skal ventilationsanlægget i et undervisningslokale kunne holde CO2-niveauet under 1000 ppm hele dagen ved en belastning fra 24 børn og 2 lærere. Der kan og må optræde enkeltstående situationer, hvor CO2-niveauet alligevel er over 1000 ppm, for eksempel hvis der er højere aktivitet, flere personer på besøg i klassen eller længere anvendelsestid end forudsat.((https://www.indeklimaportalen.dk/luftkvalitet/maaling-af-luftens-kvalitet/indendoers-co2)) \\
I denne opgave skal du lave et program, der simulerer dataindsamling fra en $CO_2$-sensor i et klasseværelse. Programmet skal analysere data fra 24 målinger, én pr. time over en hel skoledag (eller et døgn), og finde:
* Den gennemsnitlige $CO_2$-koncentration.
* Antallet af målinger, hvor $CO_2$-niveauet er over en given tærskelværdi (f.eks. 1000 ppm).
* De tre højeste målinger og deres tidspunkter.
=== Kravspecifikation ===
* Brug et int[] array til at gemme 24 målinger af CO₂-koncentration.
* Lad programmet:
* Generere 24 tilfældige $ CO_2 $ værdier i intervallet [500-1900] ppm.
* Anvend **Random** som du har brugt tidligere til at generere $CO_2$ værdierne.
* Beregne gennemsnitlig $CO_2$-koncentration.
* Tælle, hvor mange målinger der ligger over en valgt tærskelværdi, fx 1000 ppm.
* Finde og udskrive de tre højeste målinger og deres tilhørende tidspunkter (indeks i arrayet).
Det kan være lidt tricky at holde styr på de tre højeste målinger. \\
Hvad er udfordringen?\\
Tal med din siddemakker om hvordan du/i gør dette. Lav evt. pseudokode / flowchart.
=== Realistisk CO₂-data-eksempel ===
For at simulere realistisk $CO_2$-data, kan vi forestille os, at niveauerne stiger i løbet af dagen, når flere mennesker opholder sig i lokalet. $CO_2$-niveauerne kan stige fra omkring 500 ppm om morgenen til over 1500 ppm i løbet af en skoledag, især hvis der ikke er god ventilation.
Eksempel på sensor data i ppm:
[500, 520, 550, 580, 650, 700, 850, 1100, 1250, 1400, 1600, 1650, 1700, 1800, 1850, 1600, 1400, 1300, 1250, 1150, 1100, 1050, 950, 600]
=== Forventet Output ===
Hvis inputdataene er ovenstående, kunne programmet eksempelvis give følgende output:
Gennemsnitlig CO₂-koncentration: 1129 ppm
Antal målinger over 1000 ppm: 13
Top 3 målinger:
1850 ppm (time 14)
1800 ppm (time 13)
1700 ppm (time 12)
----
==== Øvelse 3: Enkelt kryptering og dekryptering af tekst ====
Lav en simpel kryptering og dekryptering af en tekst ved at forskyde hver karakter i teksten med et bestemt antal skridt (f.eks. +3). Dette kaldes også en [[https://en.wikipedia.org/wiki/Caesar_cipher|Ceasar chipher]].
{{ :images:ceasercipher.png |}}
Programmet skal kunne:
* Kryptere en given tekst.
* Dekryptere den krypterede tekst tilbage til originalen.
=== Kravspecifikation ===
* Opret en metode til kryptering, der forskyder hver karakter med et givet antal skridt.
* Opret en metode til dekryptering, der forskyder hver karakter tilbage.
* Det er ok kun at beskæftige sig med upper-case bogstaver. (dvs. store bogstaver A, B, C etc.)
* anvend [[https://learn.microsoft.com/en-us/dotnet/api/system.string.toupper?view=net-8.0|String.ToUpper()]] på dit input
* Du kan løse opgaven ved at oprette dit eget bogstav array, ..eller du kan udnytte at tegn har en ASCII værdi som der er hintet nedenstående.
=== Forventet Output ===
Hvis input er:
Input tekst: "HELLO"
Forskydning: 3
Så skal outputtet være:
Krypteret tekst: KHOOR
**Hint:** Brug af ASCII-værdier. \\
Hver karakter har en tilknyttet ASCII-værdi (et tal, der repræsenterer karakteren). For at kryptere en karakter, kan du lægge forskydningen til ASCII-værdien for den oprindelige karakter. \\
For eksempel, hvis forskydningen er 3, og du har karakteren 'a' (ASCII-værdi 97), så bliver den nye karakter 'd' (ASCII-værdi 100), da 97 + 3 = 100.
Eksempel hvor 'K' bliver til 'N'.
char nyKarakter = (char)('K' + 3);