Programmering - hjälp med en uppgift

Permalänk

Programmering - hjälp med en uppgift

Hej kära folk!
Jag behöver hjälp med en programmeringsuppgift. Jag använder mig av Javascript när jag löser mina uppgifter.

uppgiften leder så här:

Skriv ett skript som generar 100 slumptal i heltalsform mellan 1 och 100 - sedan visar alla talen, det minsta och det största i en meddelanderuta.
Av meddelanderutan ska också framgå hur många gånger det minsta och största talet förekommit.

Jag behöver inte hjälp med hela uppgiften utan jag är nästa klar, jag behöver endast hjälp med att lösa sista delen alltså: (hur många gånger det minsta och största talet förekommit).

Kan någon tala om för mig hur jag ska tänka och vad jag ska göra?

Tack i förhand!

Permalänk
Medlem

1. kolla upp vad som är minst och största talet.
2. räkna hur många gånger dom talen förekommit.

Dela upp allt bara, första du behöver göra är ju komma på ett sätt att kolla vilket tal som är minst.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk

1. Jag har redan gjort det, jag skrev ju att jag nästan är klar med hela uppgiften förutom sista delen.
2. Mitt problem är sista delen. Jag vet inte vad jag ska göra.

Permalänk
Hedersmedlem
Skrivet av Gho0st994:

Jag behöver inte hjälp med hela uppgiften utan jag är nästa klar, jag behöver endast hjälp med att lösa sista delen alltså: (hur många gånger det minsta och största talet förekommit).

Du har alltså redan kod som tar reda på vad det största och minsta talet är. Det enda du då behöver göra är att gå igenom hela serien och räkna hur många gånger de förekommer. Dvs jämför varje tal med det största och det minsta talet och får du träff räknar du upp antalet för störst eller minst.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem

EDIT: dålig läsförståelse

När du väl vet vad det är för tal borde det väl vara lätt att räkna hur många gånger den förekommit? Hur gjorde du för att få fram vilket tal som var minst och störst? Jag hade gjort likadant på båda dom stegen, fast i den sista steget så kollar man om talet är lika stort istället för att kolla om talet är större/mindre. och om talet är lika stort så skriver man en i++

Skulle du kunna tänka dig att visa hela din kod om du fortfarande inte hajjar?

Skrivet av Rixard:

kör en sortering på din array (sort()) som innehåller numren så kommer det minsta numret hamna på position 0 i arrayen. Kanske, jag har inte kodat i java förut.

Antog att han skulle koda allt utan färdiga funktioner. Det är för övrigt javascript, inte java han använder. Ingen aning om javascript har sånt där, har för mig att javascript är väldigt basic.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk
Medlem

kör en sortering på din array (sort()) som innehåller numren så kommer det minsta numret hamna på position 0 i arrayen. Kanske, jag har inte kodat i java förut.

Edit:

int[] nums={6,-1,-2,-3,0,1,2,3,4};
Arrays.sort(nums);
System.out.println("Minimum = " + nums[0]);
System.out.println("Maximum = " + nums[nums.length-1]);

You cannot make it more simpler than this. You will need to import java.util.* to use Arrays class.

Edit2 : glöm det, var inte java utan javascript

Permalänk

Så här har jag gjort...

Så fick jag fram det största respektive det minsta talet

if(biggestNumber < nummer[x])
{
biggestNumber = nummer[x];
}
if(smallestNumber > nummer[x])
{
smallestNumber = nummer[x];
}

Hur gör jag för att visa att det största respektive det minsta förkommit så många gånger som det visas på meddelanderutan?

Permalänk

Här är hela koden:

var rand = Math.floor((Math.random()*100)+1);
var nummer= new Array();
var nummerString = " ";
biggestNumber = 1;
smallestNumber = 100;

for(var x = 0; x < 100; x++)
{
nummer[x] = Math.floor((Math.random()*100)+1);

nummerString += nummer[x] + " ";

if(biggestNumber < nummer[x])
{
biggestNumber = nummer[x];
}
if(smallestNumber > nummer[x])
{
smallestNumber = nummer[x];
}

}

WScript.echo(" De 100 slumptalen är: " + " \n " + nummer+"\n Det största talet av dessa är "+biggestNumber+"\n Det minsta talet av dessa är "+smallestNumber);

Permalänk

kan någon lägga till det som fattas i koden? Så jag kan förstå hur jag bör egentligen tänka.

Permalänk
Medlem
Skrivet av Gho0st994:

Så här har jag gjort...

Så fick jag fram det största respektive det minsta talet

if(biggestNumber < nummer[x])
{
biggestNumber = nummer[x];
}
if(smallestNumber > nummer[x])
{
smallestNumber = nummer[x];
}

Hur gör jag för att visa att det största respektive det minsta förkommit så många gånger som det visas på meddelanderutan?

jag skulle gjort en for loop som går igenom varje tal. I for loopen skriver du bara
if(biggestNumber==nummer[x])
{
a++;
}
naturligtvis måste du skapa variabeln a och den ska ha värdet 0 från början. Kör du en sådan for loop så kommer den alltså öka värdet på a med 1 för varje gång den hittar en som är samma som biggestNumber och du får fram hur många gånger talet förekommer.

for loopen skulle väl i sin helhet se ut typ som

int a=0;
for (int x=0; x<100;x++){
if(biggestNumber==nummer[x])
{
a++;
}})

sen så kanske man måste använda x<=100 eller använda 99 istället för 100 eller något sådant för att få den att köras rätt antal gånger, det orkar jag inte tänka ut.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk
Medlem

Hur gör du för att hitta största och minsta talet?

Visa signatur

Fractal Design Node 304 -> ASUS ROG STRIX Z370-I GAMING ->i5 8600K -> be quiet! Pure Rock -> MSI GeForce RTX 4070 VENTUS 2X E 12G OC -> Corsair Vengeance LPX 3200 32GB -> Seasonic FOCUS Plus 650W Gold -> Samsung 960 EVO 500GB -> 2 * Western Digital Black 2 TB -> Samsung 850 EVO Basic SSD 500GB

Permalänk
Medlem
Skrivet av Gho0st994:

kan någon lägga till det som fattas i koden? Så jag kan förstå hur jag bör egentligen tänka.

Jag hade personligen lagt till en ny variabel, typ biggestNumberCount och gjort följande:

if(biggestNumber < nummer[x]) { biggestNumber = nummer[x]; biggestNumberCount = 1; // Nytt största nummer, nollställ räknaren } else if(biggestNumber == nummer[x]) { biggestNumberCount = biggestNumberCount + 1; // Samma 'största' nummer som vi redan har, så inkrementera räknaren med ett }

på detta sätt behöver du bara loopa igenom en gång.

Permalänk
Skrivet av Kiane:

Jag hade personligen lagt till en ny variabel, typ biggestNumberCount och gjort följande:

if(biggestNumber < nummer[x]) { biggestNumber = nummer[x]; biggestNumberCount = 1; // Nytt största nummer, nollställ räknaren } else if(biggestNumber == nummer[x]) { biggestNumberCount = biggestNumberCount + 1; // Samma 'största' nummer som vi redan har, så inkrementera räknaren med ett }

på detta sätt behöver du bara loopa igenom en gång.

Nej tyvärr det gick inte :/ det blev bara fel

Permalänk
Medlem
Skrivet av Kiane:

Jag hade personligen lagt till en ny variabel, typ biggestNumberCount och gjort följande:

if(biggestNumber < nummer[x]) { biggestNumber = nummer[x]; biggestNumberCount = 1; // Nytt största nummer, nollställ räknaren } else if(biggestNumber == nummer[x]) { biggestNumberCount = biggestNumberCount + 1; // Samma 'största' nummer som vi redan har, så inkrementera räknaren med ett }

på detta sätt behöver du bara loopa igenom en gång.

ja, att räkna samtidigt som man kör är ju mer korrekt och borde ju leda till ett program som körs snabbare, lite krångligare i min hjärna dock, kanske inte i andras. Hade det varit en viktig uppgift så hade man ju såklart valt den effektiva metoden 100 gånger av 100 om man nu kommer på det. bättre än att sitta och räkna igenom siffrorna flera gånger.

Skrivet av Gho0st994:

Nej tyvärr det gick inte :/ det blev bara fel

Nu har du iaf 2 olika sätt att lösa den, skriva koden och få allt att funka får du göra själv.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk
Medlem
Skrivet av Gho0st994:

Nej tyvärr det gick inte :/ det blev bara fel

Jag har inte kollat att koden går att köra utan har bara beskrivit principen. Du får själv fixa så att det blir rätt!
Du har fått tips på två olika metoder nu och bägge teorierna fungerar.. Lycka till..

Permalänk
Skrivet av deadich:

ja, att räkna samtidigt som man kör är ju mer korrekt och borde ju leda till ett program som körs snabbare, lite krångligare i min hjärna dock, kanske inte i andras. Hade det varit en viktig uppgift så hade man ju såklart valt den effektiva metoden 100 gånger av 100 om man nu kommer på det. bättre än att sitta och räkna igenom siffrorna flera gånger.

Nu har du iaf 2 olika sätt att lösa den, skriva koden och få allt att funka får du göra själv.

Hur ska jag få det att funka när jag har testat hans kod, hans kod stämde inte.

Permalänk
Medlem
Skrivet av Gho0st994:

Hur ska jag få det att funka när jag har testat hans kod, hans kod stämde inte.

Jag har själv provat koden nu och det fungerar. Vad får du för felmeddelande? Har du skapat variabeln som används?

Permalänk
Medlem
Skrivet av Gho0st994:

Hur ska jag få det att funka när jag har testat hans kod, hans kod stämde inte.

på samma sätt som du gjorde med koden du skrivit hittills?

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk

Hans kod stämmer, implementera den bara rätt.

Permalänk
Skrivet av deadich:

på samma sätt som du gjorde med koden du skrivit hittills?

Skrivet av Oliros:

Hans kod stämmer, implementera den bara rätt.

Skrivet av Kiane:

Jag har själv provat koden nu och det fungerar. Vad får du för felmeddelande? Har du skapat variabeln som används?

Jag lade till hans kod och det ser så här ut:
Men ändå så stämde det inte hos mig, kan någon förklara vad jag har missat?

var rand = Math.floor((Math.random()*100)+1);
var nummer= new Array();
var nummerString = " ";
biggestNumber = 1;
smallestNumber = 100;
biggestNumberCount = 0;

for(var x = 0; x < 100; x++)
{
nummer[x] = Math.floor((Math.random()*100)+1);

nummerString += nummer[x] + " ";

if(biggestNumber < nummer[x])
{
biggestNumber = nummer[x];
biggestNumberCount = 1;
}
else if(biggestNumber == nummer[x])
{
biggestNumberCount = biggestNumberCount + 1;
}

}

WScript.echo(" De 100 slumptalen är: " + " \n " + nummer+"\n Det största talet av dessa är "+biggestNumber+"\n Det minsta talet av dessa är "+smallestNumber + biggestNumberCount);

Permalänk
Medlem

- Slumpa 100 tal.

- Sortera i storleksordning.

- Första talet i array = minsta talet, sista i array = största talet.

- Loopa igenom minsta talet mot de andra värdena, om de är lika addera till countern.

- Gör samma sak med det högsta talet.

Kanske inte det effektivaste sättet men det fungerar.

Permalänk
Medlem
Skrivet av Rege:

- Slumpa 100 tal.

- Sortera i storleksordning.

- Första talet i array = minsta talet, sista i array = största talet.

- Loopa igenom minsta talet mot de andra värdena, om de är lika addera till countern.

- Gör samma sak med det högsta talet.

Kanske inte det effektivaste sättet men det fungerar.

- Skapa array, a[], med 100 positioner, sätt alla värden till 0 (för enkelhet säg 101 positioner från 0 till 100)
- skapa tom sträng s
- Loop
- Slumpa tal -> n
- öka elementet i arrayen med positionen n med ett dvs. öka a[n] med ett
- lägg till n till strängen s
- Sök efter första positionen (loopa i från 0 till 100) där a[i] inte är noll (i kommer vara ditt lägsta värde), antalet förekomster kommer vara a[i]
- Sök efter sista positionen (loopa j från 100 till 0) där a[j] inte är noll (j kommer vara ditt högsta värde), antalet förekomster kommer vara a[j]
- Skriv ut s och lägsta samt högsta

Visa signatur

weeeee

Permalänk
Datavetare

Eftersom ditt program redan fixar att hålla reda minsta resp. största talet i serien så är det enda du måste lägga till en räknare till största/minsta talet.

  • Skapa en tom array, samt initiera räknarna för minsta & största till 0

  • Slumpa tal N

  • lägg talet till arrayen

  • om räknaren för största/minsta är 0 sätt räknaren till 1 och sätt talet till N, annars utför nästa två fall

  • om N är lika med det sparade minsta talet, öka räknaren med 1. Om N är mindre än minsta sparade talet sätt talet till N och räknaren till 1

  • om N är lika med det sparade största talet, öka räknaren med 1. Om N är större än största sparade talet sätt talet till N och räknaren till 1

Detta kräver ingen sortering, ingen frekvensräkning av slumptal och går bara igenom listan av slumptal en gång.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk

[QUOTE=Yoshman;14284547]Eftersom ditt program redan fixar att hålla reda minsta resp. största talet i serien så är det enda du måste lägga till en räknare till största/minsta talet.

  • Skapa en tom array, samt initiera räknarna för minsta & största till 0

  • Slumpa tal N

  • lägg talet till arrayen

  • om räknaren för största/minsta är 0 sätt räknaren till 1 och sätt talet till N, annars utför nästa två fall

  • om N är lika med det sparade minsta talet, öka räknaren med 1. Om N är mindre än minsta sparade talet sätt talet till N och räknaren till 1

  • om N är lika med det sparade största talet, öka räknaren med 1. Om N är större än största sparade talet sätt talet till N och räknaren till 1

Detta kräver ingen sortering, ingen frekvensräkning av slumptal och går bara igenom listan av slumptal en gång.[/QUOTE]

Skrivet av mounte:

- Skapa array, a[], med 100 positioner, sätt alla värden till 0 (för enkelhet säg 101 positioner från 0 till 100)
- skapa tom sträng s
- Loop
- Slumpa tal -> n
- öka elementet i arrayen med positionen n med ett dvs. öka a[n] med ett
- lägg till n till strängen s
- Sök efter första positionen (loopa i från 0 till 100) där a[i] inte är noll (i kommer vara ditt lägsta värde), antalet förekomster kommer vara a[i]
- Sök efter sista positionen (loopa j från 100 till 0) där a[j] inte är noll (j kommer vara ditt högsta värde), antalet förekomster kommer vara a[j]
- Skriv ut s och lägsta samt högsta

Skrivet av Rege:

- Slumpa 100 tal.

- Sortera i storleksordning.

- Första talet i array = minsta talet, sista i array = största talet.

- Loopa igenom minsta talet mot de andra värdena, om de är lika addera till countern.

- Gör samma sak med det högsta talet.

Kanske inte det effektivaste sättet men det fungerar.

Jag förstår ingenting tyvärr :/ Kan inte någon lösa sista delen åt mig och förklara istället, det skulle vara jättesnällt av er och hjälpsamt.

Permalänk
Medlem
Skrivet av Gho0st994:

WScript.echo(" De 100 slumptalen är: " + " \n " + nummer+"\n Det största talet av dessa är "+biggestNumber+"\n Det minsta talet av dessa är "+smallestNumber + biggestNumberCount);

Borde du inte lägga till något tecken mellan smallestNumber och biggestNumberCount, elr blir det fel? nu skriver den ju ut smallestNumber och biggestNumberCount precis bredvid varandra så då ser man ju inte vilket som e vilket.

Permalänk
Benchmaskin 🍞

*Tråd låst*

Forumet är inte till för att fuska med skolarbete.