Eksamen: REA3049-CS | Semester: Vår 2025 | Varighet: 5 timer
static List<int> Behandle(List<int> liste)
{
List<int> resultat = new List<int>();
foreach (int element in liste)
{
if (element % 2 == 0)
resultat.Add(element * 2);
else
resultat.Add(element + 1);
}
return resultat;
}
List<int> tall = new List<int> { 3, 8, 5, 2 };
Console.WriteLine(string.Join(", ", Behandle(tall)));
// Svar: 4, 16, 6, 4
using System.Linq;
List<int> tall = new List<int> { 12, 5, 8, 130, 44 };
var storeTall = tall.Where(t => t > 10).ToList();
// Resultat: [12, 130, 44]
var gjennomsnitt = tall.Average();
// Resultat: 39.8
var sortert = tall.OrderByDescending(t => t).ToList();
// Resultat: [130, 44, 12, 8, 5]
class Bok
{
public string Tittel { get; set; }
public string Forfatter { get; set; }
public string Isbn { get; set; }
public bool ErUtlant { get; private set; }
public Bok(string tittel, string forfatter, string isbn)
{
Tittel = tittel;
Forfatter = forfatter;
Isbn = isbn;
ErUtlant = false;
}
public void LanUt()
{
if (ErUtlant)
throw new InvalidOperationException($"Boken '{Tittel}' er allerede utlånt.");
ErUtlant = true;
}
public void LeverTilbake()
{
if (!ErUtlant)
throw new InvalidOperationException($"Boken '{Tittel}' er ikke utlånt.");
ErUtlant = false;
}
public override string ToString()
{
string status = ErUtlant ? "utlånt" : "tilgjengelig";
return $"{Tittel} av {Forfatter} ({status})";
}
}
class Laner
{
public int LanerId { get; set; }
public string Navn { get; set; }
public List<Bok> LanteBoker { get; set; }
public Laner(int lanerId, string navn)
{
LanerId = lanerId;
Navn = navn;
LanteBoker = new List<Bok>();
}
public void LanBok(Bok bok)
{
bok.LanUt();
LanteBoker.Add(bok);
}
public void LeverTilbakeBok(Bok bok)
{
if (!LanteBoker.Contains(bok))
throw new InvalidOperationException($"{Navn} har ikke lånt '{bok.Tittel}'.");
bok.LeverTilbake();
LanteBoker.Remove(bok);
}
public override string ToString()
{
return $"{Navn} (ID: {LanerId}), {LanteBoker.Count} bøker lånt";
}
}
Bok bok1 = new Bok("Sofies verden", "Jostein Gaarder", "978-82-252-1591-5");
Laner laner = new Laner(1, "Emma Hansen");
laner.LanBok(bok1);
Console.WriteLine(bok1); // Sofies verden av Jostein Gaarder (utlånt)
try
{
laner.LanBok(bok1);
}
catch (InvalidOperationException e)
{
Console.WriteLine($"Feil: {e.Message}");
}
using System.IO;
static List<Dictionary<string, string>> LesCsv(string filnavn)
{
var data = new List<Dictionary<string, string>>();
string[] linjer = File.ReadAllLines(filnavn);
string[] header = linjer[0].Split(';');
for (int i = 1; i < linjer.Length; i++)
{
string[] verdier = linjer[i].Split(';');
var rad = new Dictionary<string, string>();
for (int j = 0; j < header.Length; j++)
{
rad[header[j]] = verdier[j];
}
data.Add(rad);
}
return data;
}
static void VisTabell(List<Dictionary<string, string>> data, string felt)
{
var sortert = data.OrderByDescending(r => double.Parse(r[felt])).ToList();
Console.WriteLine($"{"Navn",-25} {felt,10}");
Console.WriteLine(new string('-', 37));
foreach (var rad in sortert.Take(10))
{
Console.WriteLine($"{rad["Navn"],-25} {double.Parse(rad[felt]),10:F1}");
}
}
using System.Text.Json;
class Register<T>
{
private string filnavn;
public List<T> Elementer { get; set; }
public Register(string filnavn)
{
this.filnavn = filnavn;
LastFraFil();
}
public void LastFraFil()
{
try
{
string json = File.ReadAllText(filnavn);
Elementer = JsonSerializer.Deserialize<List<T>>(json);
}
catch
{
Elementer = new List<T>();
}
}
public void LagreTilFil()
{
var options = new JsonSerializerOptions { WriteIndented = true };
string json = JsonSerializer.Serialize(Elementer, options);
File.WriteAllText(filnavn, json);
}
public void LeggTil(T element)
{
Elementer.Add(element);
}
}
try/catch og throw for feilhåndtering.ToString() i klasser for lesbar utskrift.