Permalänk

C# nybörjarproblem.

Hej,

Håller på med ett program som skall lista säljare och sedan placera dem i olika "säljnivåer". När man läst in alla säljare ska resultatet sorteras innan det skrivs ut. Sorteringen ska ske 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.

Har gjort en list, sparat ner säljare och sedan gjort en loop som simpelt sorterar antal sålda artiklar. Men hur kan jag fördela in dessa i olika grupper? Typ som denna bild: https://gyazo.com/8275d3d222249d93d8b487e55002124a

Det jag behöver hjälp med är alltså;

Hur läser jag in t.ex. att 3 personer + personerna har kommer till säljnivå 3?

Permalänk
Medlem

Har du gjort en separat klass för att hantera personer? Med set och get för varje attribut?

När du då matar in i textfälten så skapas ett personobjekt som innehåller allt du vill ha,

ex. Peter Persson 781214 Stockholm 564st

Sen när det är dags att printa ut allt så loopar du igenom din lista på säljare och och sorterar dom ex. med hjälp av if-satser i olika säljgrupper.

(Ett tips för att underlätta testningen som jag gjorde när jag läste samma kurs är att hårdkoda alla säljare så att du slipper mata in dom varje gång du ska testa programmet )

Visa signatur

NZXT H1 | Sapphire RX 5600XT PULSE | AMD Ryzen 5 3600 | ASUS Strix X470-I | 16gb Crucial Ballistix RGB @3600MHz | Kingston A2000 500gb | Samsung 860 Evo 500gb| Samsung 840 Evo 250gb | Philips E-line 27" 1440p @75Hz

Permalänk

@JoL_: Yes jag har en klass säljare med get och set =).

Yes men jag vet hur jag listar alla säljare och skriver ut deras info med if-satser.
Det som jag inte förstår är hur jag kan lägga in dem i grupper, så som

"3 personer har nått säljnivå 4"

Permalänk
Medlem

@lodarletarn: Det du måste göra då är att skapa en lista för varje nivå, lägga till säljare i respektive nivå och sedan räkna upp hur många säljare det är i vardera t.ex. med hjälp av .Count();.

Visa signatur

NZXT H1 | Sapphire RX 5600XT PULSE | AMD Ryzen 5 3600 | ASUS Strix X470-I | 16gb Crucial Ballistix RGB @3600MHz | Kingston A2000 500gb | Samsung 860 Evo 500gb| Samsung 840 Evo 250gb | Philips E-line 27" 1440p @75Hz

Permalänk
Medlem

@lodarletarn: Om du skriver ut säljarna i ordning efter antalet sålda varor så behöver du bara hålla koll på hur många säljare du skrivit ut och vad gränsen för nästa nivå är. När du sedan kommer till en säljare som når nästa nivå så skriver du ut texten om hur många säljare som nådde nivån, återställer antalet säljare till 1 och uppdaterar gränsen för nästa nivå.

Permalänk
Medlem

Är syftet att lära er if() satser och loopar kanske?

list<salesman> tier1 = tier2 = tier3 = tier4 = new list<salesman>; for each element in array if(element1.artiklar > 100 && element1.artiklar <= 199) add element to tier3 else if(element1.artiklar > 199) add element to tier4 loopa igenom alla listor i ordning och skriv ut dom.

Lite halvtaskig psudokod.

Eller är syftet att sortera lists efter olika värden?

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Permalänk
Medlem
Skrivet av perost:

@lodarletarn: Om du skriver ut säljarna i ordning efter antalet sålda varor så behöver du bara hålla koll på hur många säljare du skrivit ut och vad gränsen för nästa nivå är. När du sedan kommer till en säljare som når nästa nivå så skriver du ut texten om hur många säljare som nådde nivån, återställer antalet säljare till 1 och uppdaterar gränsen för nästa nivå.

Nej det är inget bra sätt. Har han en klass med säljare så ska han sortera på attributet vilken nivå säljaren är på. Ditt sätt kommer bara skapa konstiga buggar och är onödigt avancerat

Skickades från m.sweclockers.com

Permalänk

tack för svar.

Jag skapare 3 st listor med grupper som jag lade till de olika säljarna i som hade uppnått de olika nivåerna. se kod nedan om ni är intresserade

foreach (Emplooye e in ObjSeller)
{
if (e.AmountSold > 0 && e.AmountSold <= 90)

{
group1.Add(e);
}

else if (e.AmountSold > 90 && e.AmountSold <= 159)
{
group2.Add(e);
}
else
{
group3.Add(e);
}

}

Permalänk
Medlem
Skrivet av Nexso:

Nej det är inget bra sätt. Har han en klass med säljare så ska han sortera på attributet vilken nivå säljaren är på. Ditt sätt kommer bara skapa konstiga buggar och är onödigt avancerat

Uppgiften är dels att sortera säljarna efter antalet sålda artiklar, vilket TS skrev att han redan löst, samt att skriva ut antalet säljare på varje nivå efter att säljarna på den nivån skrivits ut. Man kan lösa detta genom att dela upp den redan sorterade listan i ytterligare listor för varje nivå, eller så gör man som jag beskrev och räknar säljarna medan man skriver ut dem:

nivåer = [25, 50, 100, 200, Int32.MaxValue] // Eller vad nu nivåerna är. nivåer_str = ["0-24", "25-49", "50-99", "100-199", "över 200"] // Kan förstås genereras on-the-fly om man så vill. func skriv_antal(antal, nivå) if antal > 0 print antal + " säljare har nått nivå " + (nivå + 1) + ": " + nivåer_str[nivå] + " artiklar" nivå = 1 antal_säljare = 0 // säljare = sorterad lista med säljare efter antalet sålda artiklar. for s in säljare if s.såldaVaror >= nivåer[nivå] skriv_antal(antal_säljare, nivå) antal_säljare = 0 while s.såldaVaror >= nivåer[nivå] nivå++ antal_säljare++ print s skriv_antal(antal_säljare, nivå)

Men visst, att dela upp säljarna i olika listor är väl den uppenbara lösningen för en nybörjare, och som nybörjare är väl inte hur effektiv koden är det första man bör fokusera på ändå.