Sortera säljare med bubblesort C#
Hej! Håller på att bli galen på denna koden som jag försöker dra ihop och speciellt bubblesort.
Detta är outputen jag försöker få:
Ex.
Namn Persnr Distrikt Antal
Kalle Anka 4503038990 Piteå 173
1 säljare har nått nivå 3: 100-199 artiklar
Musse Pigg 3502038964 Boden 202
Snobben 7805055673 Luleå 203
2 säljare har nått nivå 4: över 199 artiklar
Jag har alltså två problem, först med bubbel sorteringen men sen även att när jag registrerar tex 3 nya säljare så blir all info om just den första säljaren helt blankt. Men dem andra två säljare som skrivs ut efter så funkar det perfekt. Det funkar också bra när jag bara vill lägga till en säljare. Känns som det är något fel på indexingen av arrayen eller liknande. Så skulle verkligen uppskatta alla hjälp jag kan få.
Här kommer min kod:
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
namespace simon2
{
class Program
{
public struct Säljare : IComparable<Säljare>
{
public String Namn;
public String Personnummer;
public String Distrikt;
public int AntalSåldaArtiklar;
public int CompareTo([AllowNull] Säljare other)
{
return AntalSåldaArtiklar - other.AntalSåldaArtiklar;
}
}
[STAThread]
static void Main(string[] args)
{
System.Console.Write("Hur många säljare vill du registrera?:");
string antalSäljare = System.Console.ReadLine();
System.Console.WriteLine("Registrera säljare:");
int Antalsäljare = int.Parse(antalSäljare);
Säljare[] säljare = new Säljare[Antalsäljare];
int nivå1 = 0;
int nivå2 = 0;
int nivå3 = 0;
int nivå4 = 0;
void BubbleSort<Säljare>(Säljare[] list) where Säljare : IComparable<Säljare>
{
for (int i = 0; i < list.Length; i++)
{
for (int j = 0; j < list.Length - 1 - i; j++)
{
if (list[j].CompareTo(list[j + 1]) > 0)
{
Säljare tmp = list[j + 1];
list[j + 1] = list[j];
list[j] = tmp;
}
}
}
}
for (int i = 0; i < Antalsäljare; i++)
{
System.Console.Write(" Ange Namn: ");
säljare[i].Namn = System.Console.ReadLine();
System.Console.Write(" Ange Personnummer: ");
säljare[i].Personnummer = System.Console.ReadLine();
System.Console.Write(" Ange Distrikt: ");
säljare[i].Distrikt = System.Console.ReadLine();
System.Console.Write(" Ange antal Artiklar: ");
säljare[i].AntalSåldaArtiklar = int.Parse(System.Console.ReadLine());
Console.WriteLine("\n");
if (säljare[i].AntalSåldaArtiklar < 50)
{
nivå1 = 0;
nivå1++;
}
else if (säljare[i].AntalSåldaArtiklar >= 50 && säljare[i].AntalSåldaArtiklar < 100)
{
nivå2 = 0;
nivå2++;
}
else if (säljare[i].AntalSåldaArtiklar >= 100 && säljare[i].AntalSåldaArtiklar < 200)
{
nivå3 = 0;
nivå3++;
}
else if (säljare[i].AntalSåldaArtiklar > 200)
{
nivå4 = 0;
nivå4++;
}
BubbleSort(säljare);
}
StreamWriter sw = new StreamWriter("C:Test.txt");
Console.Clear();
foreach (Säljare item in säljare)
{
Console.WriteLine("\n");
Console.WriteLine("Namn: " + item.Namn);
Console.WriteLine("Personnummer: " + item.Personnummer);
Console.WriteLine("Distrikt: " + item.Distrikt);
Console.WriteLine("Antal sälj: " + item.AntalSåldaArtiklar);
sw.WriteLine("\n");
sw.WriteLine("Namn: " + item.Namn);
sw.WriteLine("Personnummer: " + item.Personnummer);
sw.WriteLine("Distrikt: " + item.Distrikt);
sw.WriteLine("Antal sälj: " + item.AntalSåldaArtiklar);
if (item.AntalSåldaArtiklar < 50)
{
Console.WriteLine("\nAntal Säljare på nivå 1: " + nivå1);
sw.WriteLine("\nAntal Säljare på nivå 1: " + nivå1);
Console.WriteLine("-----------------------------");
}
else if (item.AntalSåldaArtiklar >= 50 && item.AntalSåldaArtiklar < 100)
{
Console.WriteLine("Antal Säljare på nivå 2: " + nivå2);
sw.WriteLine("Antal Säljare på nivå 2: " + nivå2);
Console.WriteLine("-----------------------------");
}
else if (item.AntalSåldaArtiklar >= 100 && item.AntalSåldaArtiklar < 200)
{
Console.WriteLine("Antal Säljare på nivå 3: " + nivå3);
sw.WriteLine("Antal Säljare på nivå 3: " + nivå3);
Console.WriteLine("-----------------------------");
}
else if (item.AntalSåldaArtiklar > 200)
{
Console.WriteLine("Antal Säljare på nivå 4: " + nivå4);
sw.WriteLine("Antal Säljare på nivå 4: " + nivå4);
Console.WriteLine("-----------------------------");
}
sw.Flush();
}
Console.ReadKey();
}
}
}