Svenska
nyaste
Atrás

Övrigt

Här inne pratar vi om musik, filmer, kläder och konstiga sjukdomar.

Den nya programmeringstråden


En sak till som jag tycker är mysko. Du slumpar fram färgerna, vilket betyder att det mycket väl kan hända att färgerna man ska gissa blir t ex grön två gånger i rad. Om vi tar den här biten:

if (x[1] == z)
{cout << "0 ";

}
else if (x[1] == z1){
cout << "1 ";
o[1] = 1;
}

Vi säger att både z och z1 är samma slumptal (t ex grön). Om användaren gissar på grön så blir x[1] = z = z1. Alltså har han gissat rätt, men programmet kommer att skriva ut en nolla och hoppa över "else if"-satsen. Eller har jag missat något nu?
Här skare stå något helt enormt fyndigt.
  • 0
Citerar Hydra:
En sak är det jag inte fattar dock, varför har du 6 st z:an? Jag antar att du har ett slumptal för varje färg, men räcker det inte med 5 då eller missar jag något? Förstår inte heller vad det är du försöker göra runt rad 98-100.


Den där 98 - 100 var ett experiment som tyvärr misslyckades. Strunta i den. Mitt problem är följande:

Av någon anledning så skrivs inte alla '1'or ned fast än jag har matat in rätt värde. Om vi t.ex. har dessa slumpade färger i denna ordning:

1 3 4 5 1

Då kommer inte den andra 1:an visas som rätt gissat fast jag matat in den.

Tillagt 2009-12-09 20:44:
Citerar Hydra:
Vi säger att både z och z1 är samma slumptal (t ex grön). Om användaren gissar på grön så blir x[1] = z = z1. Alltså har han gissat rätt, men programmet kommer att skriva ut en nolla och hoppa över "else if"-satsen. Eller har jag missat något nu?


Precis, det är den delen jag behöver hjälp med.
  • 0
Är det inte så att om en if stämmer hoppar den över alla else if? Testa att köra med bara if och kolla om det blir någon skillnad.
Felstavningar skylles på Iphone, alkohol, droger, Aids, amputerade fingrar och Jan Guillou
  • 0
Citerar Mr Fizhman:
Är det inte så att om en if stämmer hoppar den över alla else if? Testa att köra med bara if och kolla om det blir någon skillnad.


Det hjälper inget vidare. Det Hydra tidigare sa är problemet i koden. Vet inte hur jag skall lösa det bara....
  • 0
Citerar Herrkrabba:
Av någon anledning så skrivs inte alla '1'or ned fast än jag har matat in rätt värde. Om vi t.ex. har dessa slumpade färger i denna ordning:

1 3 4 5 1

Då kommer inte den andra 1:an visas som rätt gissat fast jag matat in den.


Ok, då är det något som är fel, kan ha något med if-satserna att göra. Jag skulle rekommendera att du enbart använder 5 stycken z:an och sedan försöker lösa problemet därifrån, så blir det garanterat rätt.

Citerar Herrkrabba:
Precis, det är den delen jag behöver hjälp med.


Det första du gör är att kolla rätt z istället, då kommer det bli rätt. Såhär:


if (x[2] == z2){
cout << "1 ";
o[2] = 1;
}
else if (x[2] == z1){
cout << "0 ";
}
else if (x[2] == z3){
cout << "0 ";
}
else if (x[2] == z4){
cout << "0 ";
}
else if (x[2] == z5){
cout << "0 ";
}
else{
cout << "X ";
}

Nu borde det funka. Om rätt färg ligger i z2 så kommer den hoppa över resten av if-satserna (vilket är bra), annars är det garanterat 0 eller X som ska skrivas ut. Lite många if-satser bara, man skulle kunna skriva ihop dem istället med eller-operatorer.
Här skare stå något helt enormt fyndigt.
  • 0
Som hydra påpekar ligger nog problemet i att du hela tiden kollar det första slumptalet först, det blir rätt på första men på andra borde du kolla andra slumptalet först och på tredje det tredje slumptalet.

Det hela skulle nog gå att göras snyggare om du hade slumptalen i en array också och utnyttjar for eller while-loopar.
Triv
  • 0
Citerar Hydra:
Det första du gör är att kolla rätt z istället, då kommer det bli rätt. Såhär:


if (x[2] == z2){
cout << "1 ";
o[2] = 1;
}
else if (x[2] == z1){
cout << "0 ";
}
else if (x[2] == z3){
cout << "0 ";
}
else if (x[2] == z4){
cout << "0 ";
}
else if (x[2] == z5){
cout << "0 ";
}
else{
cout << "X ";
}


Precis vad jag testade men av någon anledning så kan den läsa in 2 stycken likadana färger, fast inte 3....
  • 0
Citerar Herrkrabba:
Precis vad jag testade men av någon anledning så kan den läsa in 2 stycken likadana färger, fast inte 3....


Då är det något annat som är knasigt, för det ska fungera. Men om man stöter på en färg i någon av satserna så kommer programmet såklart hoppa över resten, det är inte det du syftar på eller?
Här skare stå något helt enormt fyndigt.
  • 0
Citerar Herrkrabba:
För tillfället ser min kod ut på följande sätt:
http://codepad.org/csPO31za


Du har glömt att plussa på din array o. Sen så kommer du fortfarande få problem med dina if-satser.

if (x[0] == z[3]){
cout << "0 ";
}
else if (x[1] == z[3]){
cout << "0 ";
}
else if (x[2] == z[3]){
cout << "0 ";
}
else if (x[3] == z[3]){
cout << "1 ";
}
else if (x[4] == z[3]){
cout << "0 ";
}
else{
cout << "X ";
}

Om x[0] råkar vara samma som z3 här så kommer du aldrig att få chansen att kolla om x[3] = z3, det viktigaste.

Gör istället så att du organiserar om dina if-satser som de var från början, fast så att du kollar rätt z överst, som jag ändrade.
Här skare stå något helt enormt fyndigt.
  • 0
Verkar du ha bytt plats på grejerna, förut var x-indexet konstant men nu är det på z istället.
Triv
  • 0
Citerar Hydra:
Om x[0] råkar vara samma som z3 här så kommer du aldrig att få chansen att kolla om x[3] = z3, det viktigaste.

Gör istället så att du organiserar om dina if-satser som de var från början, fast så att du kollar rätt z överst, som jag ändrade.


Nu har jag ändrat koden ännu en gång.

http://codepad.org/6WSPGNYu

Nu kan jag äntligen få alla 1: or om så är fallet. Men det finns fortfarande kvar ett antal buggar.
  • 0
Citerar Herrkrabba:
Nu har jag ändrat koden ännu en gång.

http://codepad.org/6WSPGNYu


Nu set det rätt bra ut tycker jag, hur funkar det nu då?
EDIT: Ok, ett fåtal buggar, borde gå att fixa låter det som.
Här skare stå något helt enormt fyndigt.
  • 0
Citerar Hydra:
Nu set det rätt bra ut tycker jag, hur funkar det nu då?
EDIT: Ok, ett fåtal buggar, borde gå att fixa låter det som.


Alltså, programmet väljer istället 'X' vid vissa tillfällen när det egentligen borde stå '0'.

Spelet går däremot att klara av nu.

Tillagt 2009-12-09 22:32:
Om jag använder mig av samma färg vid alla chansningar. Om den då skulle läsa ut '1' så tolkar programmet alla andra av samma färg som 'X'. Alltså att dem inte skulle finnas med.
  • 0
Citerar Herrkrabba:
Om jag använder mig av samma färg vid alla chansningar. Om den då skulle läsa ut '1' så tolkar programmet alla andra av samma färg som 'X'. Alltså att dem inte skulle finnas med.


Jag fattar inte riktigt. Så om du t ex ger alla X värdet 2, då kommer programmet bara att skriva ut X efter att du hittat en färg med värdet 2 en gång, eller vad menar du?
Här skare stå något helt enormt fyndigt.
  • 0
Citerar Hydra:
Jag fattar inte riktigt. Så om du t ex ger alla X värdet 2, då kommer programmet bara att skriva ut X efter att du hittat en färg med värdet 2 en gång, eller vad menar du?


Precis.
  • 0
Citerar Herrkrabba:
Precis.


Jadu, if-satserna ser rätt ut iallafall. Hinner inte leta mer just nu tyvärr.
Här skare stå något helt enormt fyndigt.
  • 0
Citerar Hydra:
Jadu, if-satserna ser rätt ut iallafall. Hinner inte leta mer just nu tyvärr.


Tackar för all din hjälp!
  • 0
Citerar Herrkrabba:
Tackar för all din hjälp!


Lugnt. Sitter och pluggar inför min egna programmeringstenta på måndag, men om jag har tid senare ska jag nog fixa så att jag kan kompilera C++-program på den här datorn (har tänkt göra det ett tag i vilket fall), då borde det dessutom bli lättare att lokalisera felet.
Här skare stå något helt enormt fyndigt.
  • 0
Jag skulle behöva lite hjälp med en C++ uppgift angående binär talföljd. Uppgiften är sådan att man genom att skriva in ett binärt tal t ex 100001011 så skall programmet göra om det till ett vanligt tal. Jag vet att man kan räkna ut tal på detta sätt t ex 101: 1*2^2 + 0*2^1 + 1*2^0.

Kan någon hjälpa mig på spåren, måste ha gjort klart detta tills på måndag i alla fall.
  • 0
Fick en bok i Actionscript 3.0 programmering i julklapp. På en morgon har jag lärt mig mer än vad jag gjorde på Flash-lektionerna hela förra terminen.
Felstavningar skylles på Iphone, alkohol, droger, Aids, amputerade fingrar och Jan Guillou
  • 0
Vilket program är bra om man ska börja testa lite att programmera? Och hur lär man sig sedan att använda det programmet?
  • 0
Citerar Jolle4:
Vilket program är bra om man ska börja testa lite att programmera? Och hur lär man sig sedan att använda det programmet?
Om du vill lära dig programmering funderar du ut först vilket språk du vill lära dig och inte vilket program du vill använda. När du har kommit på det kan du börja kolla runt på lite olika program.
Kan tipsa om att C++ är ett bra språk att börja med då det är hyffsat enkelt att komma igång med, har många olika kompilatorer och är ett stort språk.
Felstavningar skylles på Iphone, alkohol, droger, Aids, amputerade fingrar och Jan Guillou
  • 0
Citerar Mr Fizhman:
Om du vill lära dig programmering funderar du ut först vilket språk du vill lära dig och inte vilket program du vill använda. När du har kommit på det kan du börja kolla runt på lite olika program.
Kan tipsa om att C++ är ett bra språk att börja med då det är hyffsat enkelt att komma igång med, har många olika kompilatorer och är ett stort språk.


Okej, då kan jag ju testa med C++. Men hur ska jag lära mig grunderna? Finns det typ tutorials i programmet?
  • 0
Citerar Jolle4:
Okej, då kan jag ju testa med C++. Men hur ska jag lära mig grunderna? Finns det typ tutorials i programmet?
När du skriver programmeringskod behöver du inget specielt program utan du kan skriva den i vilken textredigerare som helst.
Men för att köra koden behöver du en kompilator, en kompilator är ett program som kör din kod, oftast innehåller kompilatorerna egna textredigerare så du kan skriva all kod direkt i programmet.
Det finns 100-tals olika kompilatorer så det är bara att välja en som passar sin egen smak, själv föredrar jag Visual Studio '08 men den är inte heller gratis.
Det finns vissa hjälp-filer i VS i alla fall, där de är lite "komma igång" guider. Men det är inget jag rekommenderar, allra bäst är att lära sig grunderna från någon som redan kan programmera och sedan expirementera och gå vidare.
Det är svårt att lära sig något när man inte har någon att fråga och bara försöker följa dåliga guider på internet.
Felstavningar skylles på Iphone, alkohol, droger, Aids, amputerade fingrar och Jan Guillou
  • 0

För att kommentera måste du vara inloggad. Om du inte är medlem än - bli medlem nu!