Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main(string[] args)
- {
- List<Stad> Städer = new List<Stad>(); // Deklaration av lista för städer
- bool avsluta = false; // Deklaration booleanskt värde
- int n = Städer.Count; // Deklaration av "n" till antalet städer i listan
- List<Stad> SorteradLista = Städer.OrderBy(n => n.temp).ToList(); // Deklaration av sorterad lista från lägst till högst temperatur i stad
- do
- {
- // Meny som visas för användaren
- Console.WriteLine("\n===Väderstation===");
- Console.WriteLine("1: Ange temperatur för 5 städer");
- Console.WriteLine("2: Sök efter en temperatur");
- Console.WriteLine("3: Skriv ut städer sorterade efter temperatur");
- Console.WriteLine("4: Sök efter temperatur i en lista med städer");
- Console.WriteLine("5: Skriv ut stad med >lägst< temperatur");
- Console.WriteLine("6: Skriv ut stad med >högst< temperatur");
- Console.WriteLine("7: Avsluta programmet");
- Console.Write("Ange alterntativ: ");
- int alternativ = Convert.ToInt32(Console.ReadLine());
- switch (alternativ)
- {
- case 1:
- for (int i = 0; i < 5; i++)
- {
- Console.Write("\nNamn på stad: ");
- string namn = Console.ReadLine();
- Console.Write("Stadens temperatur: ");
- int temp = Convert.ToInt32(Console.ReadLine());
- Stad stad = new Stad(namn, temp);
- Städer.Add(stad);
- }
- Console.Clear();
- break;
- case 2:
- Console.Write("\nAnge temperatur du vill söka: ");
- int söktemp = Convert.ToInt32(Console.ReadLine());
- int index = linsok(Städer, n, söktemp);
- if (index == -1)
- Console.WriteLine("Finns ingen stad med temperaturen i listan.");
- else
- Console.WriteLine(Städer[index].namn + " har följande temperatur: " + söktemp);
- break;
- case 3:
- Console.WriteLine("\n===Lista med Städer===");
- bubblesort(Städer, n);
- break;
- case 4:
- Console.Write("\nAnge värde du söker: ");
- int bSök = Convert.ToInt32(Console.ReadLine());
- int resultat = binärSökning(SorteradLista, bSök, n);
- if (resultat == -1)
- {
- Console.WriteLine("Sökta värdet finns inte i listan.");
- }
- else
- {
- Console.WriteLine("Värdet för den sökta temperaturen är: " + resultat);
- }
- break;
- case 5:
- Console.WriteLine(lägstTemp(Städer).namn + " har lägst temperatur med: " + lägstTemp(Städer).temp + " grader.");
- break;
- case 6:
- lägstTemp(Städer);
- Console.WriteLine(högstTemp(Städer).namn + " har högst temperatur med: " + högstTemp(Städer).temp + " grader.");
- break;
- case 7:
- Console.WriteLine("Tack för att du använt Väderstationen.");
- avsluta = true;
- break;
- default:
- Console.WriteLine("Ett fel har uppstått");
- avsluta = true;
- break;
- }
- }
- while (!avsluta);
- // Metod för linjär sökning i en lista
- static int linsok(List<Stad> Städer, int n, int söktemp)
- {
- for (int i = 0; i < Städer.Count; i++)
- {
- if (Städer[i].temp == söktemp)
- {
- return i;
- }
- }
- return -1;
- }
- // Metod som sorterar stad-lista efter temperatur (kallast först)
- void bubblesort(List<Stad> SorteradLista, int n)
- {
- foreach (var item in SorteradLista)
- {
- Console.WriteLine(item.namn + ": " + item.temp + " grader.");
- }
- }
- // Metod för binär sökning som söker efter temperatur i en sorterad lista
- static int binärSökning(List<Stad> SorteradLista, int bSök, int n)
- {
- int låg = 0;
- int hög = SorteradLista.Count - 1;
- while (låg <= hög)
- {
- int mitten = (låg + hög) / 2;
- if (bSök == SorteradLista[mitten].temp)
- {
- return mitten;
- }
- else if (SorteradLista[n].temp == 1)
- {
- return -1;
- }
- else if (bSök < SorteradLista[mitten].temp)
- {
- hög = mitten - 1;
- }
- else
- {
- låg = mitten + 1;
- }
- }
- return -1;
- }
- // Metod som tar reda på stad med högst temperatur
- static Stad högstTemp(List<Stad> Städer)
- {
- int max = int.MinValue;
- Stad result = null;
- foreach (var item in Städer)
- {
- if (item.temp > max)
- {
- max = item.temp;
- result = item;
- }
- }
- return result;
- }
- // Metod som tar reda på stad med lägst temperatur
- static Stad lägstTemp(List<Stad> Städer)
- {
- int min = int.MaxValue;
- Stad result = null;
- foreach (var item in Städer)
- {
- if (item.temp < min)
- {
- min = item.temp;
- result = item;
- }
- }
- return result;
- }
- }
- class Stad
- {
- public string namn { get; set; }
- public int temp { get; set; }
- // lagrar stadens namn och temperatur
- public Stad(string namn, int temp)
- {
- this.namn = namn;
- this.temp = temp;
- }
- // Metod ToString
- public string ToString()
- {
- return namn + " " + temp;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment