Vinnaren i pepparkakshustävlingen!
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
Medlem
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
2017-07-27, 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
2017-07-29, 20:10
  #3164
Medlem
tj.s avatar
Citat:
Ursprungligen postat av MeanME
Jon Skeet är författaren bakom C# in Depth...
Så är det. Och det innebär ju givetvis att det är en bok att rekommendera. Men jag skulle ändå i första hand rekommendera hans tutorials på Pluralsight, de är väldigt bra.

Osäker om de kräver prenumeration dock.
Citera
2017-08-01, 16:46
  #3165
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av tj.
Så är det. Och det innebär ju givetvis att det är en bok att rekommendera. Men jag skulle ändå i första hand rekommendera hans tutorials på Pluralsight, de är väldigt bra.

Osäker om de kräver prenumeration dock.
Nu är jag så gammal att internet existerade inte när jag växte upp.
Så jag är mer hemma med böcker.

Skönt att kunna lämna plattor och lappar och kunna gå ut i trädgården och läsa en bok i hammocken utan att bli störd. När man blir för trött att läsa vidare funkar den utmärkt som solskärm med när man tar sig en liten välbehövlig tupplur.

Det fixar ingen webbsida i världen.
Citera
2017-09-08, 19:42
  #3166
Medlem
Jag är ny på C# och undrar hur man får in ny rad mellan varje console.write. För när jag kör programmet hamnar alla siffror och bokstäver efter varandra på samma rad i terminalen.

Mvh

Kod:
class MainClass
    
{
        public static 
void Main(string[] args)
        {
            
byte number 2;
            
int count 10;
            
float totalPrice 20.95f;
            
char character 'A';
            
string patrik "Patrik";
            
bool isWorking true;
                
            
Console.Write(number);

            
Console.Write(count);  
            
Console.Write(totalPrice);
            
Console.Write(character);
            
Console.Write(patrik);
            
Console.Write(isWorking);
        }
    } 
Citera
2017-09-08, 19:51
  #3167
Moderator
Protons avatar
Citat:
Ursprungligen postat av AdiosAmigos111
Jag är ny på C# och undrar hur man får in ny rad mellan varje console.write. För när jag kör programmet hamnar alla siffror och bokstäver efter varandra på samma rad i terminalen.

Mvh

Kod:
class MainClass
    
{
        public static 
void Main(string[] args)
        {
            
byte number 2;
            
int count 10;
            
float totalPrice 20.95f;
            
char character 'A';
            
string patrik "Patrik";
            
bool isWorking true;
                
            
Console.Write(number);

            
Console.Write(count);  
            
Console.Write(totalPrice);
            
Console.Write(character);
            
Console.Write(patrik);
            
Console.Write(isWorking);
        }
    } 
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

Så, använder du WriteLine-metoden istället för Write borde du lösa problemet.
Citera
2017-09-08, 19:57
  #3168
Medlem
Citat:
Ursprungligen postat av Proton
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

Så, använder du WriteLine-metoden istället för Write borde du lösa problemet.

Tack, funkade bra med WriteLine ja.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback