Behöver hjälp med skoluppgift i C#

Permalänk
Medlem

Behöver hjälp med skoluppgift i C#

Hej!

Har en skoluppgift i C# som jag inte riktigt lyckas lösa efter flera dagars googlande och testande.
Uppgiften går ut på att sortera ett visst antal säljare som användaren registrerar.
(Användaren registrerar även hur många säljare som ska registreras)
Säljarna ska registreras efter antal sålda artiklar/produkter.
Antal sålda artiklar avgör även vilken nivå säljaren är på.
Säljarna ska sen sorteras med hjälp av bubbelsort efter nivå.
Därefter ska resultatet skrivas ut både till en fil och i programmet direkt.

Det jag behöver hjälp med är sorteringen och följande fel:

Error CS1503 Argument 1: cannot convert from 'int' to 'int[]' Inlämingsuppgift2ConsoleApplication

Om ni ser att något annat är fel eller kan förbättras får ni gärna säga till.

Här är hela koden:

using System;
using System.IO;

namespace Inlämingsuppgift2ConsoleApplication
{
class Program
{
public struct Säljare
{
public String Namn;
public String Personnummer;
public String Distrikt;
public int 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 BubbleSortera(int[] säljare)
{

for (int m = säljare.Length - 1; m > 0; m--)
{

for (int n = 0; n < m; n++)
{

if (säljare[n] > säljare[n + 1])
{

int tmp = säljare[n];

säljare[n] = säljare[n + 1];
säljare[n + 1] = 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++;
}

BubbleSortera(säljare[i].AntalSåldaArtiklar);

}

try
{
StreamWriter sw = new StreamWriter("F:\\Test.txt");

for (int i = 0; i < säljare.Length; i++)
{

sw.WriteLine("\n");
sw.WriteLine("Namn: " + säljare[i].Namn);
sw.WriteLine("Personnummer: " + säljare[i].Personnummer);
sw.WriteLine("Distrikt: " + säljare[i].Distrikt);
sw.WriteLine("Antal sälj: " + säljare[i].AntalSåldaArtiklar);

Console.WriteLine("\n");
Console.WriteLine("Namn: " + säljare[i].Namn);
Console.WriteLine("Personnummer: " + säljare[i].Personnummer);
Console.WriteLine("Distrikt: " + säljare[i].Distrikt);
Console.WriteLine("Antal sälj: " + säljare[i].AntalSåldaArtiklar);

sw.WriteLine("\n");
sw.WriteLine("-----------------------------");
sw.WriteLine("\n Antal Säljare på nivå 1: " + nivå1);
sw.WriteLine("Antal Säljare på nivå 2: " + nivå2);
sw.WriteLine("Antal Säljare på nivå 3: " + nivå3);
sw.WriteLine("Antal Säljare på nivå 4: " + nivå4);
sw.WriteLine("\n -----------------------------");

Console.WriteLine("\n");
Console.WriteLine("-----------------------------");
Console.WriteLine("\n Antal Säljare på nivå 1: " + nivå1);
Console.WriteLine("Antal Säljare på nivå 2: " + nivå2);
Console.WriteLine("Antal Säljare på nivå 3: " + nivå3);
Console.WriteLine("Antal Säljare på nivå 4: " + nivå4);
Console.WriteLine("\n -----------------------------");
sw.Flush();

}

}

catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}

finally
{
Console.WriteLine("Executing finally block.");
}
}
}
}

Permalänk
Medlem

Problemet är denna rad:

BubbleSortera(säljare[i].AntalSåldaArtiklar);

Du kan inte sortera en enda säljare. Din sorteringsfunktion bör nog inte heller ta int[] som argument utan snarare Säljare[], annars kan du ju inte ändra ordningen på säljarna.

Permalänk
Medlem

Felmeddelandet säger precis vad som är fel. Du måste bara lära dig att tolka dem (och lär dig debuggern! Om jag var lärare i programmering så skulle jag banka in breakpoints och debuggern...).

Kan inte konvertera int till int[].

När du skapar funktionen bubblesort så säger du att den ska ta en int-array (int[]). Men hur har du anropat den? Med en indexerad säljare, alltså en specifik bara, inte alla. Och du har även valt .antalArtiklar som värde för säljaren. Detta värde är en int.

Sen bör du göra som perost ovan skrev. Du vill troligen sortera på alla säljare, så skicka in alla säljare (säljare[]). Men först måste du ändra i funktionen så att den kan ta emot säljare[] istället för inte[]

PS, byt ut ) mot ] i första taggen här:
[code) string codeTags = "rules" [/code]

Så blir det så här: (snyggar upp kod)

string codeTags = "rules"

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem
Skrivet av talonmas:

PS, byt ut ) mot ] i första taggen här:
[code) string codeTags = "rules" [/code]

D.v.s. (med [noparse]):
[code]
Kod här
[/code]

Permalänk
Medlem

Tack för all hjälp och tips! På grund av er är problemet äntligen löst.