Hjälp med C# sortera och "ta bort" från array

Permalänk
Medlem

Hjälp med C# sortera och "ta bort" från array

Jag har letat i dagar och testat massa av olika varianter men jag kan inte lösa mina problem. Jag hoppas att någon vänlig själ kan hjälpa mig eller ge mig en knuff i rätt riktning.

Jag gör just nu ett projekt i programmering 1 kurs C#. Skall göra en läskback. Jag har läst trådar från andra som också har gjort denna uppgift men ingen om svarar på mina frågor.

Jag är väldigt ny på programmering, men har ett stort intresse av att lära mig. men nu har jag fastnat.

Jag har 2 klasser utöver klass program, en sodacrate, där det mesta av programmet ligger, sen har jag en till klass soda som bara har med min array att göra.

så mina problem är:
1. Jag försöker ta bort en flaska i min array crate, genom att man får välja index att ta bort, sedan vill jag att man skall kunna lägga till en ny genom metoden AddSoda().

2. Man skall kunna sortera arrayen crate efter namn och pris. vilket jag inte heller lyckas med. Det som står där nu är en vanlig bubblesort som jag testade, som inte funkar.

Min kod nedan:

class Sodacrate
{
Soda[] crate = new Soda[4];
int amountBottles = 0; //Håller reda på hur många flaskor det finns i backen
bool mainmenu = true;
int index = 0;

public void Run()
{
while (mainmenu)
{
Console.WriteLine("Välkommen till programmet läskbacken, välj ett alternativ nedan");
Console.WriteLine("1. Lägg till läsk");
Console.WriteLine("2. Visa innehållet i din läskback");
Console.WriteLine("3. Sortera läskbacken");
int inmatat = int.Parse(Console.ReadLine());

switch (inmatat)
{
case 1:
AddSoda();
break;
case 2:
ShowCrate();
break;
case 3:
SortCrate();
break;
}
}
}

//Metod Lägg till sodaflaska
public void AddSoda()
{
bool loop = true;

while (loop)
{
Console.WriteLine("Välj vilken läsk du vill lägga till i din back");
Console.WriteLine("1. Cola");
Console.WriteLine("2. Fanta");

int inmatat = int.Parse(Console.ReadLine());
amountBottles++;

switch (inmatat)
{
case 1:
if (amountBottles >= 5)
{
Console.WriteLine("Backen är full!");
Console.WriteLine("Vill du ta bort en flaska? J/N + enter.");
string inmatatJaNej = Console.ReadLine();
if (inmatatJaNej == "J" || inmatatJaNej == "j")
{
DeleteElement();
}

loop = false;
}
else
{
crate[index] = new Soda("Cola", 12, "Läsk");
loop = false;
index++;
}
break;
case 2:
crate[index] = new Soda("Fanta", 10, "Läsk");
loop = false;
index++;
break;
}
}
}

//Metod visa innehåll i backen
public void ShowCrate()
{
foreach (var dryck in crate)
{
if (dryck != null)
Console.WriteLine(dryck);
else
Console.WriteLine("Tom plats");
}
}

public void DeleteElement ()
{
//Soda[] temp = new Soda[crate.Length -1];

int i = 1; //Visar index att välja på
Console.WriteLine("Välj index ~ 1-24");
foreach (var dryck in crate)
{
Console.WriteLine(i++ + "." + dryck);
}

int inmatatIndex = int.Parse(Console.ReadLine());

//for (int j = 0; j < crate.Length; j++)
//{
// temp[j] = crate[j];
//}

//crate[inmatatIndex - 1] = null;

amountBottles = 1;
}

public void SortCrate()
{
int max = crate.Length - 1;

for (int i = 0; i < max; i++)
{
int nrLeft = max - i;

for (int j = 0; j < nrLeft; j++)
{
if (crate[j] > crate[j + 1])
{
int temp = crate[j];
crate[j] = crate[j + 1];
crate[j + 1] = temp;
}
}
}
}
}

class Soda
{
string name;
double price;
string type;

public Soda(string n, double p, string t)
{
name = n;
price = p;
type = t;
}

public double ReturnPrice()
{
return price;
}

//public string ReturnName()
//{
// return name;
//}

public override string ToString()
{
return string.Format ("Namn: {0}. Pris {1}. Typ {2}", name, price, type);
}
}

Permalänk
Medlem

Det här är ju en exakt kopia av en tråd som redan diskuteras här, går ni i samma klass eller skola? Sök i forumet så får du nog dina svar.

Eller är det kurslitteraturen i Sverige som är otroligt tråkig? ;O

Permalänk
Medlem

@gonace: hehe, vi går nog båda på hermods.. läste den tråden, men dock så kunde jag inte få svar på min frågor då vi har gjort programmen utifrån olika betyg, tror jag. Mitt problem, beskrivs inte i den tråden.. vad jag kunde se, men jag kanske borde posta mitt inlägg i den tråden ist.