11 svar
761 visningar
delz är nöjd med hjälpen
delz 50
Postad: 2 feb 2018 17:01

Do While loop (Singla slant) - Jscript

/* Ska singla slant och när det har blivit krona 3 gånger så KAN resultatet visa ex: 
krona

klave

klave

krona

klave

*/

var arrSlant = new Array('Krona','Klave');
var slump = Math.floor(2*Math.random());
var objHandtag = WScript.CreateObject('WScript.Shell');
var svar = objHandtag.Popup('Du kommer nu singla slant, krona eller klave! tills det har blivit 3 krona',0,'Krona eller Klave',0);
var krona = 0;
var slant;

do
{

slant = arrSlant[slump];    
slant = slant + '\n';     //<-- Jag misstänker problemet är här men vet ej hur jag ska lösa det..

if (arrSlant[0])
{
krona = krona + 1;

}
}
while(krona < 3);
WScript.Echo('Du har fått ' + krona + ' krona nu,\nså här ser slantsinglandet ut i ett meddelande\n' + slant);

 

/*Det som jag fastnar på är att jag vet inte hur jag ska visa resultatet med slantsinglandet..dvs ex:
krona

klave

klave 

krona etc

*/

IGIL 43
Postad: 2 feb 2018 20:06

Hur ser svaret ut nu när du skriver ut?

delz 50
Postad: 2 feb 2018 21:38


IGIL 43
Postad: 2 feb 2018 21:47

Jag tror att felet ligger delvis i hur din do while loop är uppbyggd. Det som händer nu är att den skapar ett slumpat tal mellan 0 och 1. Men, detta tal ändras inte eftersom den koden som skapar det slumpade talet ligger inte i loop, det vill säga att den bara körs en gång. Testa att lägga in

var slump = Math.floor(2*Math.random());

i din do while loop så att den skapar ett nytt slumpat tal för varje gång loopen körs. Svara med det nya resultatet!

delz 50
Postad: 2 feb 2018 22:08

samma resultat, funkar ej :/

IGIL 43
Postad: 2 feb 2018 22:32

Jag lyckades lösa ditt problem. Det första är att du måste skapa ditt slump tal i början av varje loop så att det skapas ett nytt tal varje gång den körs. Det jag bad dig att testa. Det riktiga problem ligger i denna delen av din kod:

slant = arrSlant[slump];
slant = slant + '\n';


Kolla vad som händer med variabeln slant om den koden körs till exempel 3 gånger. Klura lite och fråga om hjälp ifall du behöver!

delz 50
Postad: 2 feb 2018 22:54

slant = arrSlant[slump];
slant = slant + '\n';
jag ser att här ovan är problemet men listar inte ut det. Jag förstår att den skriver över slant från  slumpen men vet faktiskt inte hur jag ska få till att den sparar den föregående slanten och lägger till ny slant på nästa rad..

IGIL 43
Postad: 2 feb 2018 23:08 Redigerad: 2 feb 2018 23:08
delz skrev :

slant = arrSlant[slump];
slant = slant + '\n';
jag ser att här ovan är problemet men listar inte ut det. Jag förstår att den skriver över slant från  slumpen men vet faktiskt inte hur jag ska få till att den sparar den föregående slanten och lägger till ny slant på nästa rad..

Bra att du kom på problemet! Du har faktiskt gjort så att den spara det gamla på olika ställen. Om du skriver din kod på följande sätt kommer det att funka:

slant = slant + arrSlant[slump];
slant = slant + '\n';


Här sätter du variabeln slant till vad den var förut och lägger till Krona eller Klave med hjälp av:

+ arrSlant[slump]


Hoppas det funkar nu!

delz 50
Postad: 2 feb 2018 23:22

Tack! Nu ser jag det självklara!

delz 50
Postad: 3 feb 2018 13:24

Jag ser nu att det borde  visa att det har blivit 3 kronor i slantsinglandet. Det ska då stå exempelvis:
klave
krona
klave

klave

krona
krona

Och jag tror att det är i min if -sats som är problemet, jag vill att ifall det blir en krona av slant funktionen så ska den addera +1 i variabeln krona.
Men jag tror att den ser allt "som en krona" och adderar +1 och därefter skrivs ut utfallen av slant funktionen.


var arrSlant = new Array('Krona','Klave');
var objHandtag = WScript.CreateObject('WScript.Shell');
var svar = objHandtag.Popup('Du kommer nu singla slant, krona eller klave! tills det har blivit 3 krona',0,'Krona eller Klave',0);
var krona = 0;
var slant = '';
do
{
var slump = Math.floor(2*Math.random());
var slant = slant + arrSlant[slump];
slant = slant + '\n';


if (arrSlant[0])
{

krona = krona + 1;

}

}
while(krona < 3);
WScript.Echo('Du har fått ' + krona + ' krona nu,\nså här ser slantsinglandet ut i ett meddelande \n' + slant);



IGIL 43
Postad: 3 feb 2018 20:27 Redigerad: 3 feb 2018 20:42

Du har rätt. Det är din if-statement som krånglar till det. Det du har skrivit inuti i ditt if-statement är korrekt. Mitt tips är följande:

if ( ... ) //Här inne

Kolla ifall ditt slumpade tal (slump) är lika med krona eller klave, det vill säga 0 eller 1.


Klura lite och se ifall du kommer på det, annars fråga!

delz 50
Postad: 3 feb 2018 22:12

Har tänkt nu länge och ser att med alert(slump) så blir det antingen 1 eller 0.
Löste det:

if (slump == 0)
{
krona = krona + 1;

}

Tack för hjälpen!

Svara Avbryt
Close