Indholdsfortegnelse
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.1)
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 Ceasar chipher.
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 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);

