Permalänk

Programmering 1 - Bussen

using System; namespace Bussen { class Program { class Bus { public int[] passengers; // vektor med plats för passagerare i form av värden (åldrar) public int size; // variabel som används för att bestämma vektorns storlek public void Run() { Console.WriteLine("Välkommen till programmet för buss statistik\n"); Console.WriteLine("Hur många passagerare kan åka med idag? Bussen har 50 platser.\n"); try { size = Convert.ToInt32(Console.ReadLine()); // läser in värde från användaren som bestämmer storlek på vektor } catch (Exception e) // fångar upp om storleken på vektorn är mindre än 0 eller större än 50 { if (size < 0 && size > 50) // villkorsstyrning för värde som bestämmer storlek på vektor Console.WriteLine("Det får bara plats 50 personer på bussen!\n"); Console.WriteLine("Hur många passagerare kan åka med idag?\n"); } passengers = new int[size]; // tidigare inläst värde bestämmer storlek på vektor Console.WriteLine("\nVad vill du göra idag?\n"); int menu = 0; // villkor för do-while loop deklareras do { Console.WriteLine("Välj alternativ med siffran 1-5: \n"); Console.WriteLine("1. Lägga till passagerare\n"); Console.WriteLine("2. Skriv ut ålder för alla passagerare\n"); Console.WriteLine("3. Beräkna den sammanlagda åldern för alla passagerare\n"); Console.WriteLine("4. Beräkna medelålder för alla passagerare\n"); Console.WriteLine("5. Avsluta programmet\n"); menu = int.Parse(Console.ReadLine()); switch (menu) { case 1: AddPassenger(); // fyller vektor med värden break; case 2: PrintAge(); // skriver ut alla åldrar på passagerarna break; case 3: TotalAge(); // skriver ut den sammanlagda åldern av alla passagerare break; case 4: AverageAge(); // skriver ut passagerarnas medelålder break; case 5: menu = 0; // avslutar programmet break; } } while (menu != 0); // villkor för när do-while loop avslutas } public void AddPassenger() { for (int y = size; y < passengers.Length; y++) { Random newNumber = new Random(); int newPassenger = newNumber.Next(1, 85); passengers[y] = newPassenger; // Varför fyller inte detta min vektor med slumpade tal? } Console.WriteLine("\nAlla passagerare har nu klivit på:"); foreach (int age in passengers) Console.WriteLine(age); } public void PrintAge() { foreach (int age in passengers) { Console.WriteLine("Passagerarnas åldrar är: " + age); } } public void TotalAge() { int sum = 0; for (int y = size; size < passengers.Length; y++) { sum += passengers[y]; Console.WriteLine("Passagerarnas total ålder är {0}" + sum + " år"); } } public void AverageAge() { int sum = 0; // Instansierar sum till värdet 0 double sum1 = 0; // instansierar sum1 till värdet 0 for (int y = 0; y < passengers.Length; y++) // tilldelar vektor värden { sum += passengers[y]; // lägger ihop värden i vektor med värdet för sum som är 0 sum1 = (double)sum; // typomvandlar int sum till double sum1 = sum / passengers.Length; // delar totalt värde i vektor med vektors längd Console.WriteLine("Passagerarnas medelålder är {0}" + sum1 + " år"); // skriver ut medelåldern } } static void Main(string[] args) { var myBus = new Bus(); myBus.Run(); Console.ReadKey(); } } } }

Permalänk

Hjälp

Jag läser programmering 1 och har kört fast lite på slutprojektet bussen. I metoden addPassengers vill jag fylla min vektor med slumpade tal mellan 1-85. Tycker jag gjort detta precis på samma sätt som i en tidigare uppgift. Storleken på min vektor bestäms av användaren och det funkar som det ska men när talen som lagras i vektorn skrivs ut blir det bara 0:or, varför?

Permalänk

I AddPassenger så är det kanke lite tokigt att initiera y till size, kanske skulle vara bättre att sätta den till 0?

Visa signatur

AMD Ryzen 5 3600 | Sapphire R9 280

Permalänk

@utsatt_unge496: Tackar för hjälpen. I min okunskap då detta som sagt är första kursen jag läser i programmering så trodde jag att jag skulle vara tvungen instansiera vektorn till samma storlek som användaren bestämt i tidigare steg men nu funkar det i varje fall.

Super tack!