===== 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);