Forumdelen sponsras av

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Jan 2011

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?

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Nov 2010

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 )

PC: NZXT S340 Vit | Cooler Master G650M | Asus Sabertooth Z77 | Intel Core i7 3770 @4,1GHz | BeQuiet Pure Rock | 4x4gb Corsair Vengeance LP 1600Mhz | Samsung 850 Evo 250gb | Samsung 840 Evo 250gb | ASUS GTX 970 Strix 4gb

Hackintosh: NZXT S340 Vit | Cooler Master G750M | ASrock P67 Pro3 | Intel Core i5 2500K @4,2GHz | Cooler Master Nepton 280L | 4x4gb Corsair Vengeance LP 1600Mhz | Corsair Force LE 250gb | Intel 520 120gb | Evga GTX 780 3gb

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Jan 2011

@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"

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Nov 2010

@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();.

PC: NZXT S340 Vit | Cooler Master G650M | Asus Sabertooth Z77 | Intel Core i7 3770 @4,1GHz | BeQuiet Pure Rock | 4x4gb Corsair Vengeance LP 1600Mhz | Samsung 850 Evo 250gb | Samsung 840 Evo 250gb | ASUS GTX 970 Strix 4gb

Hackintosh: NZXT S340 Vit | Cooler Master G750M | ASrock P67 Pro3 | Intel Core i5 2500K @4,2GHz | Cooler Master Nepton 280L | 4x4gb Corsair Vengeance LP 1600Mhz | Corsair Force LE 250gb | Intel 520 120gb | Evga GTX 780 3gb

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007

@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å.

Trädvy Permalänk
Medlem
Plats
Borlänge
Registrerad
Jan 2003

Ä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?

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Trädvy Permalänk
Medlem
Registrerad
Maj 2017
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

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Jan 2011

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);
}

}

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
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å.