Programmering 1 C# projektplanering
Hej!
Jag läser programmering 1 på distans och nu håller jag på med den sista uppgiften i kursen. Jag ska skapa ett program som ska kunna hålla reda på åldrarna på olika biobesökare. Jag ska kunna lägga till besökare, skriva ut alla besökarnas åldrar, räkna ut alla besökares totala ålder, beräkna den genomsnittliga åldern, räkna ut vilken besökare som är äldst, visa alla besökare mellan ett valt åldersspann och sortera besökarna utifrån deras ålder. Jag har kommit en bra bit, men jag har stött på några problem som jag har försökt lösa i flera timmar både själv och med lärarens stöttning, men det går bara inte. Såhär ser min kod ut hittills:
class Bio
{
public int[] visitor = new int[20]; //vektor deklarerad
public int new_visitors; //int där vi lägger det vi använder från vektorn
public void Run()
{
Console.WriteLine("---------------------------");
Console.WriteLine("Välkommen till denna besöksregistrerare för biografer!");
Console.WriteLine("---------------------------");
Console.WriteLine(" ");
int menu; //int meny deklareras
do
{
Console.WriteLine("---------------------------"); //menyn användaren ser
Console.WriteLine("Välj ett alternativ: ");
Console.WriteLine("1. Lägg till besökare. ");
Console.WriteLine("2. Skriv ut åldern på alla besökarna. ");
Console.WriteLine("3. Beräkna den sammanlagda åldern på besökarna. ");
Console.WriteLine("4. Beräkna medelåldern på besökarna. ");
Console.WriteLine("5. Identifiera den äldsta besökaren. ");
Console.WriteLine("6. Identifiera besökarna inom ett valt åldersspann. ");
Console.WriteLine("7. Sortera besökarna efter ålder. ");
Console.WriteLine("0. Avsluta programmet. ");
Console.WriteLine("---------------------------");
Console.WriteLine(" ");
menu = int.Parse(Console.ReadLine()); //översätter vad användaren skriver in till en int
switch (menu) //switch case meny
{
case 1:
Add_visitor();
break;
case 2:
Print_age_in_cinema();
break;
case 3:
Calculate_total_age();
break;
case 4:
Calculate_average_age();
break;
case 5:
Oldest_visitor();
break;
case 6:
Find_visitors_age();
break;
case 7:
Sort_age();
break;
case 0:
menu = 0;
break;
}
} while (menu != 0); //avslutas!
}
public void Add_visitor() //metod för att lägga till besökare
{
Console.WriteLine("Hur många besökare vill du lägga till?");
try //try catch för att vi endast vill ha siffror
{
int size = Convert.ToInt32(Console.ReadLine());
if (size + new_visitors > 20) //endast siffror under 20 är ok
{
Console.WriteLine("Biosalongen får endast ta emot 20 besökare p.g.a. Coronarestriktionerna. Försök igen."); //annars skrivs detta ut
}
else //om de skriver siffror under 20
{
for (int i = 0; i < size; i++) //så körs for-loopen
{
Console.WriteLine("Lägg till en besökare genom att skriva in hens ålder: ");
int added_visitors = Convert.ToInt32(Console.ReadLine()); //översätt svaret till int och lagra i vår variabel
visitor[i] = added_visitors; //lagra i vektorn
new_visitors++; //kör om på nytt
}
}
}
catch
{
Console.WriteLine("Du kan endast fylla i besökarens ålder! Försök igen."); //visas om de skriver bokstäver
}
}
public void Print_age_in_cinema() //metod för att skriva ut alla passagerare
{
for (int i = 0; i < visitor.Length; i++) //for-loop som kör igenom åldern på alla besökare
{
if (visitor[i] > 0)
{
Console.WriteLine("Besökarnas ålder är " + visitor[i]); //skriver ut åldrarna i vektorn
Console.WriteLine(" ");
}
if (visitor[i] < 1)
{
Console.WriteLine("Platsen är ledig");
}
}
}
public void Calculate_total_age() //metod för att räkna alla besökarnas ålder
{
int sum = 0;
for (int i = 0; i < new_visitors; i++) //for-loop som kör igenom alla_besökarna-variabeln
{
sum += visitor[i]; //läser in besökarna från vektorn & adderar och lägger in i variabeln sum
}
Console.WriteLine("Den sammanlagda åldern på alla besökare är " + sum + ".");
Console.WriteLine(" ");
}
public void Calculate_average_age() //metod för att räkna ut medelåldern
{
int sum = 0;
for (int i = 0; i < new_visitors; i++) //for-loop som kör igenom alla-besökare-variabeln
{
sum += visitor[i]; //läser in besökarna från vektorn & adderar och lägger in i variabeln sum
}
double doublesum = Convert.ToDouble(sum); //översätter till en double
double doublesum1 = doublesum / new_visitors; //räknar ut medelåldern
Console.WriteLine("Medelåldern på besökarna är " + doublesum1 + " år.");
Console.WriteLine(" ");
}
public int Oldest_visitor() //metod för att räkna ut maxåldern
{
int mostAge = 0; //ny variabel
for (int i = 0; i < new_visitors; i++) //for-loop som kör igenom alla-besökarna-variabeln
{
if (visitor[i] > mostAge)
{
mostAge = visitor[i]; //lägger alla i vektorn i variabeln mostAge
}
}
Console.WriteLine("Den äldsta besökaren är " + mostAge + " år gammal.");
Console.WriteLine(" ");
return mostAge;
}
public void Find_visitors_age()
{
{
Console.WriteLine("Vilken är den lägsta åldern du vill ha i sökspannet?"); //användaren får välja lägsta ålder
int low = Convert.ToInt32(Console.ReadLine()); //lagrar i int
Console.WriteLine("Vilken är den högsta åldern du vill ha i sökspannet?");
int high = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Besökarna mellan åldern " + low + " och " + high + " sitter på: ");
for (int i = 0; i < new_visitors; i++) //for-loop som kör igenom alla-besökarna-variabeln
{
if (visitor[i] > low || visitor[i] < high) //identifierar spannet
{
Console.WriteLine("Biosäte " + i); //skriver ut sätesnumren
}
}
Console.WriteLine(" ");
Console.WriteLine("OBS; Det finns 20 säten och de är numrerade mellan 0-19."); //pga att det börjar på noll...
}
}
public void Sort_age()
{
int max = visitor.Length - 1;
for (int i = 0; i < max; i++)
{
int nrLeft = max - i;
for (int j = 0; j < nrLeft; j++)
{
if (visitor[j] < visitor[j + 1])
{
int temp = visitor[j];
visitor[j] = visitor[j + 1];
visitor[j + 1] = temp;
}
}
}
for (int i = 0; i < visitor.Length; i++)
Console.WriteLine(" " + visitor[i]);
}
class Program
{
public static void Main(string[] args) //programmetoden
{
var minbio = new Bio(); //programmet
minbio.Run(); //körs
Console.Write("Tryck på någon tangent för att fortsätta avslutningen.");
Console.ReadKey(true);
}
}
}
}
Det som inte funkar är:
1. Metoden som ska skriva ut alla besökarnas åldrar
2. Metoden som ska beräkna den totala summan av alla besökarnas åldrar
3. Metoden som ska visa alla besökarna inom ett visst åldersspann
4. Metoden som ska sortera besökarna utifrån deras ålder
Metoden som ska visa alla besökarna inom ett visst åldersspann funkar aldrig, men alla de andra metoderna som jag behöver hjälp med fungerar som de ska om man bara lägger till besökare i en omgång. Alltså om jag väljer att lägga in fem besökare på en och samma gång och sedan skriva ut att deras åldrar så funkar det. Det funkar dock inte om jag först lägger till två och sedan väljer att lägga till tre till och sedan skriva ut deras åldrar. Då skrivs endast åldrarna på besökarna som jag la till i sista omgången, ut.
Jag hoppas att jag har varit tydlig med vad som är problemet, annars är det bara att ställa frågor.
Jag menar såklart inte att ni ska göra jobbet åt mig, vill bara få andras (mer erfarna programmerare) synpunkter. All hjälp uppskattas!
Tack på förhand