Skapa bubbleSort för sortering? [C#]

Permalänk
Medlem

Skapa bubbleSort för sortering? [C#]

Hejsan, går en introduktionslinje för programmering i C# och behöver lite vägledning med en uppgift, såhär ser instruktionerna ut för att ge en bättre bild av programmet:

Skriv ett litet program (console applikation) som läser in uppgifter för sex säljare i en säljkår.
Indata till programmet är de uppgifter om säljare som matas in.

Så här kan det se ut på skärmen:
Namn:
Personnummer:
Distrikt:
Antal sålda artiklar:

Följande uppgifter ska alltså läsas in: namn, personnummer, vilket distrikt han/hon arbetar i, hur många artiklar han/hon har sålt under perioden.
Detta för att man har ett bonussystem där viss del av lönen är fast och viss del rörlig. Den rörliga baseras på antal sålda artiklar (ni behöver dock inte beräkna lönen). Man vill sen se statistik över försäljningen..
Det ska finnas följande fyra nivåer: under 50 artiklar, 50-99 artiklar, 100-199 artiklar samt en nivå 199 artiklar

När man läst in alla säljare ska resultatet sorteras innan det skrivs ut. Sorteringen sker på antal sålda artiklar. I utskriften ska alla resultat i sorterad ordning finnas med samt hur många säljare som ligger inom varje nivå och hur många artiklar var och en har sålt.

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

Dold text

Jag har lyckats koda fram allt förutom koden för sorteringen, såhär ser min kod ut:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Inlämningsuppgift2
{
struct säljare
{
public string namn;
public string personnummer;
public string distrikt;
public int antalartiklar;
public int nivå;

}

class Program
{

static void SortSalesman(säljare[] arr)
{
//Kod för att sortera

}

static void Main(string[] args)
{

using (StreamWriter writer = new StreamWriter("Säljarinfo.txt"))
{
writer.WriteLine("Namn" + " " + "Personnr" + " " + "Distrikt" + " " + "Antal");
for (int i = 0; i < 6; i++)
{

säljare[] säljararray = new säljare[6];

//Anger namn för säljare
Console.Write("Ange namn för säljare : ");
säljararray[i].namn = System.Console.ReadLine();

//Anger personnummer för säljare
Console.Write("Anger personnummer för säljare : ");
säljararray[i].personnummer = Console.ReadLine();

//Anger distrikt för säljare
Console.Write("Ange distrikt för säljare : ");
säljararray[i].distrikt = Console.ReadLine();

//Anger antal sålda artiklar för säljare
Console.Write("Ange antal sålda artiklar för säljare : ");
säljararray[i].antalartiklar = int.Parse(Console.ReadLine());
Console.WriteLine();

//Anger vilken nivå som säljare uppnått
if (säljararray[0].antalartiklar < 50)
säljararray[0].nivå = 1;

if (säljararray[0].antalartiklar >= 50 && säljararray[0].antalartiklar < 99)
säljararray[0].nivå = 2;

if (säljararray[0].antalartiklar >= 100 && säljararray[0].antalartiklar < 199)
säljararray[0].nivå = 3;

if (säljararray[0].antalartiklar > 199)
säljararray[0].nivå = 4;

writer.WriteLine(säljararray[i].namn + " " + säljararray[i].distrikt + " " + säljararray[i].personnummer + " " + säljararray[i].antalartiklar);

}

}

}
}
}

Dold text

Jag ska sortera med en såkallad bubbleSort, och det är här jag har fastnat, har kollat runt lite på nätet om hur bubbleSort fungerar men lyckas inte komma så långt, någon vänlig själ som kunnat hjälpa mig? Försök att inte komplicera det med massa andra metoder/funktioner, kom ihåg att detta bara är en nybörjarkurs.

Mvh Linus

Permalänk
Skrivet av LaiiN:

Hejsan, går en introduktionslinje för programmering i C# och behöver lite vägledning med en uppgift, såhär ser instruktionerna ut för att ge en bättre bild av programmet:

Skriv ett litet program (console applikation) som läser in uppgifter för sex säljare i en säljkår.
Indata till programmet är de uppgifter om säljare som matas in.

Så här kan det se ut på skärmen:
Namn:
Personnummer:
Distrikt:
Antal sålda artiklar:

Följande uppgifter ska alltså läsas in: namn, personnummer, vilket distrikt han/hon arbetar i, hur många artiklar han/hon har sålt under perioden.
Detta för att man har ett bonussystem där viss del av lönen är fast och viss del rörlig. Den rörliga baseras på antal sålda artiklar (ni behöver dock inte beräkna lönen). Man vill sen se statistik över försäljningen..
Det ska finnas följande fyra nivåer: under 50 artiklar, 50-99 artiklar, 100-199 artiklar samt en nivå 199 artiklar

När man läst in alla säljare ska resultatet sorteras innan det skrivs ut. Sorteringen sker på antal sålda artiklar. I utskriften ska alla resultat i sorterad ordning finnas med samt hur många säljare som ligger inom varje nivå och hur många artiklar var och en har sålt.

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

Dold text

Jag har lyckats koda fram allt förutom koden för sorteringen, såhär ser min kod ut:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Inlämningsuppgift2
{
struct säljare
{
public string namn;
public string personnummer;
public string distrikt;
public int antalartiklar;
public int nivå;

}

class Program
{

static void SortSalesman(säljare[] arr)
{
//Kod för att sortera

}

static void Main(string[] args)
{

using (StreamWriter writer = new StreamWriter("Säljarinfo.txt"))
{
writer.WriteLine("Namn" + " " + "Personnr" + " " + "Distrikt" + " " + "Antal");
for (int i = 0; i < 6; i++)
{

säljare[] säljararray = new säljare[6];

//Anger namn för säljare
Console.Write("Ange namn för säljare : ");
säljararray[i].namn = System.Console.ReadLine();

//Anger personnummer för säljare
Console.Write("Anger personnummer för säljare : ");
säljararray[i].personnummer = Console.ReadLine();

//Anger distrikt för säljare
Console.Write("Ange distrikt för säljare : ");
säljararray[i].distrikt = Console.ReadLine();

//Anger antal sålda artiklar för säljare
Console.Write("Ange antal sålda artiklar för säljare : ");
säljararray[i].antalartiklar = int.Parse(Console.ReadLine());
Console.WriteLine();

//Anger vilken nivå som säljare uppnått
if (säljararray[0].antalartiklar < 50)
säljararray[0].nivå = 1;

if (säljararray[0].antalartiklar >= 50 && säljararray[0].antalartiklar < 99)
säljararray[0].nivå = 2;

if (säljararray[0].antalartiklar >= 100 && säljararray[0].antalartiklar < 199)
säljararray[0].nivå = 3;

if (säljararray[0].antalartiklar > 199)
säljararray[0].nivå = 4;

writer.WriteLine(säljararray[i].namn + " " + säljararray[i].distrikt + " " + säljararray[i].personnummer + " " + säljararray[i].antalartiklar);

}

}

}
}
}

Dold text

Jag ska sortera med en såkallad bubbleSort, och det är här jag har fastnat, har kollat runt lite på nätet om hur bubbleSort fungerar men lyckas inte komma så långt, någon vänlig själ som kunnat hjälpa mig? Försök att inte komplicera det med massa andra metoder/funktioner, kom ihåg att detta bara är en nybörjarkurs.

Mvh Linus

Här kanske det finns lite som kan hjälpa dig på traven
http://csharpskolan.se/showarticle.php?id=72

Visa signatur
Permalänk
Medlem

Är du tvungen att använda bubble sort?
Finns ju betydligt bättre alternativ om du frågar mig iaf.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Administrativ avgift
Skrivet av NoPaiN^:

Är du tvungen att använda bubble sort?
Finns ju betydligt bättre alternativ om du frågar mig iaf.

Tror det är en skoluppgift och då måste han

Visa signatur

Loque Raw s1| 7950x3D | B650-i | 2x16GB DDR5 CL30@6000 | 2TB m.2 | 4090 TUF | Samsung G9 49 | Vive Focus 3

Permalänk
Medlem
Skrivet av trisse23:

Tror det är en skoluppgift och då måste han

Tänkte mer att inom undervisning så går man igenom de flesta vanliga sorterings algoritmer, för att veta för och nackdelar.
Kanske det är så att de får välja nån bland dessa som dem har gått igenom.
Känns mer givande att göra en som faktiskt används oftare där ute.
Dock kan det iovs bli mer komplicerat, men det finns faktiskt ganska lätta där ute.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Medlem

En varning bara: det är just tänket, och koden, för ex.v. bubblesort som lär komma på tentan sen så försök komma på hur den funkar

EDIT: Kebabhyvlarns länk var bra, väldigt pedagogisk filmsnutt där

Visa signatur

Spel: Intel i5 9600K@4,8GHz | Hydro H100i Pro | 32GB Vengeance RGB Pro 3000MHz | Z390 Gaming X | HX750 | GTX1060 6GB | MSI Optix G273QF | Corsair Obsidian 500D RGB | EVO 970 Pro 500GB + EVO 980 1TB
Barnens: Intel i7 920 | 16GB Corsair | GA-X58A-UD7 | HX520 | GTX460 SLI | P182 | EVO 840 256GB

Permalänk
Medlem

Tack för svar allihopa!

Tittade på filmen om bubbleSort och förstår vad det gör, men jag har absolut ingen aning om hur koden ska se ut? Enligt wiki ska strukturen se ut såhär:

procedure bubbleSort( A : list of sortable items ) n = length(A) repeat swapped = false for i = 1 to n-1 inclusive do if A[i-1] > A[i] then swap(A[i-1], A[i]) swapped = true end if end for n = n - 1 until not swapped end procedure

Någon som kunde snickrat ihop koden så att det fungerar? Känner att det är lättare att förstå koden när man ser den färdig, för just nu har jag ingen aning om hur jag ska göra så lite hjälp hade varit trevligt.

Permalänk
Medlem

http://www.youtube.com/watch?v=2zTYRF63N8g

Utan att ha läst vad som ska göras antar jag att du ska sortera på den som sålt mest?
Efter du skapat alla säljare och härlett dem in till nivåer är det nivåer du ska plocka in och sortera på.

Permalänk
Medlem
Skrivet av epatnor:

En varning bara: det är just tänket, och koden, för ex.v. bubblesort som lär komma på tentan sen så försök komma på hur den funkar

EDIT: Kebabhyvlarns länk var bra, väldigt pedagogisk filmsnutt där

Håller med! Detta är absolut en uppgift som kommer på tentan, be hellre din lärare att förklara tänket bakom sorteringen så du förstår. Videon är väldigt bra att förklara hur du behöver skapa koden. Det är bra att lära sig de olika sorterings algoritmerna.

Visa signatur

Console: Xbox Series X TV: Samsung Q70T 4K 120HZ Headset: Turtle Beach Stealth 700 Gen 2

Permalänk
Medlem

Lyckade du får ihop den??

Permalänk
Medlem
Skrivet av vajjan:

http://www.youtube.com/watch?v=2zTYRF63N8g

Utan att ha läst vad som ska göras antar jag att du ska sortera på den som sålt mest?
Efter du skapat alla säljare och härlett dem in till nivåer är det nivåer du ska plocka in och sortera på.

Så här sorterar man traditionellt på ungerska Pustan: http://www.youtube.com/watch?v=lyZQPjUT5B4

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Så här sorterar man traditionellt på ungerska Pustan: http://www.youtube.com/watch?v=lyZQPjUT5B4

haha klockren!