Csharp programmering 1
Hej!
Jag har försökt nu fram och tillbaka och ser inte riktigt vad jag gör för fel.
I mitt program har jag en metod som går igenom min vektor och skriver ut det högsta värdet. (Max_age)
Jag försöker nu göra en metod som går igenom min vektor och skriver ut det lägsta värdet. (Min_age)
I min värld så bör dessa metoder vara snarlika? att det den enda skillnaden är åt vilket håll "<" pekar? eller?
jag för metoden Max_age att fungera felfritt.
I detta fall är det ålder på passagerare som jag lagrat i min vektor.
När jag däremot anropar metoden Min_age så blir output 0, ooavsett vilka värden som finns i vektorn?
Någon som förstår vad jag menar och kan förklara hur jag bör tänka för att få det att funka?
Klistrar in min kod nedan:
using System;
namespace miniBuss1
{
class Program
{
public static void Main(string[] args)
{
//Skapar ett objekt av klassen Buss som heter minbuss
Buss miniBuss = new Buss();
miniBuss.Run();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class Buss
{
private int total_passengers = 0; // Lagrar input från användaren
private int max_passengers = 25; // Max antal sittplatser på bussen
private int[] passengers = new int[25]; // Skapar utrymme i minnet för att kunna lagra en vektor med 25 element
public void Run()
{
int menyval = 0;
do // Skapar en loop som går runt med 7st alternativ som leder vidare till metoder
{
bool validInput = false; // bool kontrollerar att input från användaren är i rätt format
Console.WriteLine("___________________________________________________");
Console.WriteLine("|Hej busschaufför, vänligen gör ett val: |");
Console.WriteLine("|__________________________________________________|");
Console.WriteLine("|1. Visa alla passagerare. |");
Console.WriteLine("|2. Lägg till passagerare. |");
Console.WriteLine("|3. Visa den totala åldern på alla passagerare. |");
Console.WriteLine("|4. Visa medelålder på passagerare. |");
Console.WriteLine("|5. Visa den äldsta passageraren. |");
Console.WriteLine("|6. Visa den yngsta passageraren. |");
Console.WriteLine("|7. Avsluta programmet. |");
Console.WriteLine("|__________________________________________________|");
while (!validInput)
{
try
{
menyval = int.Parse(Console.ReadLine());
validInput = true;
}
catch // om input från användaren inte är siffror
{
Console.WriteLine("Fel format, vänligen ange ett heltal mellan 1-7");
}
}
switch (menyval)
{
case 1:
Print_info();
break;
case 2:
Add_passenger();
break;
case 3:
Calc_total_age();
break;
case 4:
Calc_average_age();
break;
case 5:
Max_age();
break;
case 6:
Min_age();
break;
case 7:
Console.WriteLine("Programmet avslutas, hejdå!");
break;
default:
Console.WriteLine("Felaktig inmatning, vänligen ange ett val mellan 1-7");
break;
}
} while (menyval != 7); // Loopar så länge menyvalet inte är 7
}
private void Add_passenger()
{
bool validInput = false;// bool kontrollerar att input från användaren är i rätt format
Console.WriteLine("Hur många passagerare stiger på?");
int pass = 0;
while (!validInput)
{
try
{
pass = int.Parse(Console.ReadLine());
validInput = true;
}
catch
{
Console.WriteLine("Felaktig inmatning, vänligen ange ett heltal.");
validInput = false;
}
}
if (total_passengers + pass > max_passengers) // om det lagrade antalet platser + de som önskas läggas till överskrider det totala antalet platser skrivs nedan string ut
{
int empty_seats = max_passengers - total_passengers; // antalet lediga sittplatser är de totala antalet platser (25) minus det lagrade antalet
Console.WriteLine("Det finns inte så många lediga platser.\n Det är {0} tomma säten kvar", empty_seats);
return;
}
else if (total_passengers == max_passengers) // När bussen är full skrivs nedan string ut
{
Console.WriteLine("Bussen är nu fullsatt");
return;
}
for (int i = 0; i < pass; i++)
{
Console.Write("Ange åldern för passagerare nummer " + (i + 1) + ": ");
try //Kontollera att input är korrekt, annars fångas det upp och meddelas användaren
{
passengers[total_passengers] = int.Parse(Console.ReadLine());
total_passengers++;
}
catch
{
Console.WriteLine("Felaktig inmatning, vänligen ange ett heltal.");
i--; // Hoppar tillbaka ett steg i indexposition.
}
}
}
public void Print_info()
{
if (total_passengers != 0)
{
Console.WriteLine("Dessa passagerare finns på bussen:");
for (int i = 0; i < total_passengers; i++) // Går igenom vektorn med en for-loop enligt hur många passagerare som finns på bussen och skriver ut
{
Console.WriteLine("På sittplats " + (i + 1) + " sitter en passagerare som är " + passengers[i] + " år gammal");
}
}
else
{
Console.WriteLine("Det finns inga passagerare på bussen för tillfället"); // Är bussen tom skrivs denna string ut
}
}
public void Calc_total_age()
{
if (total_passengers != 0) // Kontrollerar att det finns passagerare lagrade i vektorn och lägger ihop alla element
{
int total_age = 0;
for (int i = 0; i < total_passengers; i++)
{
total_age += passengers[i];
}
Console.WriteLine($"Passagerarnas totala ålder är: {total_age} år");
}
else
{
Console.WriteLine("Det finns inga passagerare på bussen för tillfället");// Är bussen tom skrivs denna string ut
}
}
public void Calc_average_age()
{
if (total_passengers != 0)
{
int sum = 0;
for (int i = 0; i < total_passengers; i++)
{
sum += passengers[i];
}
double average_age = sum / total_passengers; // var double för att tillåta flyttal
Console.WriteLine("Medelåldern på bussen är " + Math.Round(average_age, 1) + " år."); //Rundar av resultatet till en decimal
}
else
{
Console.WriteLine("Det finns inga passagerare på bussen för tillfället"); // Är bussen tom skrivs denna string ut
}
}
public void Max_age()
{
if (total_passengers != 0)
{
int oldest_passenger = passengers[0];
for (int i = 1; i < passengers.Length; i++)
{
if (passengers[i] > oldest_passenger)
{
oldest_passenger = passengers[i];
}
}
Console.WriteLine($"Äldsta passageraren på bussen är {oldest_passenger} år gammal");
return;
}
else
{
Console.WriteLine("Det finns inga passagerare på bussen för tillfället");// Är bussen tom skrivs denna string ut
}
}
public void Min_age()
{
if (total_passengers != 0)
{
int youngest_passenger = passengers[0];
for (int i = 1; i < passengers.Length; i++)
{
if (passengers[i] <youngest_passenger)
{
youngest_passenger = passengers[i];
}
}
Console.WriteLine($"Yngsta passageraren på bussen är {youngest_passenger} år gammal");
}
else
{
Console.WriteLine("Det finns inga passagerare på bussen för tillfället");// Är bussen tom skrivs denna string ut
}
}
}
}