• 28 424 online
  • 1 111 988 medlemmar
  • 57 836 198 inlägg
2017-07-19, 17:12
  #3157
Medlem
Exclamation-marks avatar
Citat:
Ursprungligen postat av Gottisborgen
Varför får du inte till det?
Jämför med priset istället för objektet? När du hittat något som ska flyttas, flyttar du objectet istället?

Jag har testat vidare lite men får inte till det.

Jag skapar ett objekt av leksaken:

Kod:
public void add(string nameint priceint position)
        {
            
leksaker[position] = new leksak(nameprice);
        } 


I klassen "leksak" använder jag en metod för att hämta priset

Kod:
public int get_price()                      
        {
            return 
price;
        } 


Jag försöker att sortera vektorn nedan

Kod:
public void bubblesort()
        {
            
int max leksaker.Length 1;

            for (
int i 0maxi++)
            {
                
int nrLeft max i;

                for (
int j 0nrLeftj++)
                {

                    if (
leksaker[j].get_price() > leksaker[1].get_price())
                    {
                        
leksak temp leksaker[j];
                        
leksaker[j] = leksaker[1];
                        
leksaker[1] = temp;
                    }
                }
            }

        } 

Problemet nu är att jag har en vektor där vissa av positionerna fortfarande är tomma. När jag försöker jämföra

Kod:
if (leksaker[j].get_price() > leksaker[1].get_price()) 

Så är vissa positioner i vektorn = null, och då kraschar programmet.

Hur löser jag detta? Har försökt med if satser och while loopar men får inte till det.
Citera
2017-07-19, 17:55
  #3158
Medlem
Citat:
Ursprungligen postat av Exclamation-mark
Jag har testat vidare lite men får inte till det.

Jag skapar ett objekt av leksaken:

Kod:
public void add(string nameint priceint position)
        {
            
leksaker[position] = new leksak(nameprice);
        } 


I klassen "leksak" använder jag en metod för att hämta priset

Kod:
public int get_price()                      
        {
            return 
price;
        } 


Jag försöker att sortera vektorn nedan

Kod:
public void bubblesort()
        {
            
int max leksaker.Length 1;

            for (
int i 0maxi++)
            {
                
int nrLeft max i;

                for (
int j 0nrLeftj++)
                {

                    if (
leksaker[j].get_price() > leksaker[1].get_price())
                    {
                        
leksak temp leksaker[j];
                        
leksaker[j] = leksaker[1];
                        
leksaker[1] = temp;
                    }
                }
            }

        } 

Problemet nu är att jag har en vektor där vissa av positionerna fortfarande är tomma. När jag försöker jämföra

Kod:
if (leksaker[j].get_price() > leksaker[1].get_price()) 

Så är vissa positioner i vektorn = null, och då kraschar programmet.

Hur löser jag detta? Har försökt med if satser och while loopar men får inte till det.

Ok. Enklaste lösningen är att använda dig utav en List istället för Array, således löser vi problemet med att det kan finnas ickeanvända index i arrayen.
Måste du använda en array? Är det en uppgift för någon kurs?

Nästa grej är då, måste du skriva algoritmen själv? I en Lista finns det inbyggt sortering, och du kan skriva en egen comperator för att bestämma hur, sen finns det även Linq som gör allt mycket enklare(som även går att använda på arrayer (arr = arr.OrderBy(x => x?.Price).ToArray())).


Men för att fixa sorteringen får vi först kolla ifall indexen är null,
enkelt med leksaker[j]?.get_price() > leksaker[j + 1]?.get_price(),
nu kommer vi att klara sorteringen, med problemet att vi inte gör något med de index som är null, kan duga för dig beroende på vad det är du vill göra.

För att försöka komma undan detta så får vi kolla vilket av objecten som är null.
Är det indexet för objectet vi ska jämföra med(j), behöver vi endast fortsätta loopen för att hitta nästa object att jämföra med. Ifall det är objectet vi ska jämföra(i) behöver vi söka igenom resten av arrayen för att hitta det objectet som skulle flyttats hit istället. (har jag för mig..?)
Citera
2017-07-22, 03:32
  #3159
Medlem
Ree81s avatar
Bästa bok att lära sig C# på egen hand? Gärna uppdaterad. Utgå från att jag inte är ett pucko.
Citera
2017-07-25, 04:21
  #3160
Medlem
Citat:
Ursprungligen postat av Ree81
Bästa bok att lära sig C# på egen hand? Gärna uppdaterad. Utgå från att jag inte är ett pucko.
C# 6.0 draft Language Specification
.NET API Browser
Citera
2017-07-25, 11:23
  #3161
Medlem
preben12s avatar
Citat:
Ursprungligen postat av Ree81
Bästa bok att lära sig C# på egen hand? Gärna uppdaterad. Utgå från att jag inte är ett pucko.

Jag byter från en Java-tjänst till en .NET-tjänst med C# till hösten och har i sommar försökt fräscha upp mina C#-kunskaper. Jag utgick från "C# 6.0 in a Nutshell för att få koll på C# och vad som var nytt sen jag senaste rörde det. Sen CLR Via C# för att få en bra grund över hur CLR fungerar. Jag har även slagit lite i C# in Depth då jag ville fördjupa mig inom något speciellt.

Förslagen ovan utgår dock från att du är relativt förtrogen med något annat programmeringsspråk sedan tidigare.
Citera
2017-07-26, 13:17
  #3162
Moderator
tj.s avatar
Jon Skeet och flera andra tunga namn inom .Net har bra tutorials på Pluralsight. Skulle rekommendera dem före en bok.
Citera
Igår, 13:47
  #3163
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av tj.
Jon Skeet och flera andra tunga namn inom .Net har bra tutorials på Pluralsight. Skulle rekommendera dem före en bok.
Jon Skeet är författaren bakom C# in Depth...
Citera