Permalänk
Medlem

Tärningsproblem i C++

Har skrivit ett program som "kastar tärning" antalet gånger man själv anger.

Nu vill jag på något sätt fixa så att programmet skriver ut hur många sexor jag har fått. Hur gör jag det??

Edit: Har löst det:)

Visa signatur

You cant dodge this bullet cause this aint The Matrix....

Permalänk
Medlem

Det förvånar mig att du lär dig hantera slumptal innan du går igenom variabler. Du får helt enkelt skapa en variabel som bara adderar 1 varje gång man får en 6:a. Sen skriver ut detta tal.

Typ:

int i= 0;

//
//Tärningsgrej
//

if (tarning==6)
i++;

typ...

Visa signatur

Stek mer! - Flingor - Schampo
Överklockning är är lika överskattat som din dator är överklockad.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av vojnik
Edit: Har löst det:)

Citat:

Ursprungligen inskrivet av johle
Det förvånar mig att du lär dig hantera slumptal innan du går igenom variabler.

För ~3timmar sedan.

Permalänk
Medlem

Hehe, okej Sitter ute med laptopen vid en pool och det är så sjukt ljust så jag ser i stort sett ingenting, missade din edit. Stavar säkert fel nu också för jag ser knappt skärmen.

Visa signatur

Stek mer! - Flingor - Schampo
Överklockning är är lika överskattat som din dator är överklockad.

Permalänk
Glömsk

Problemet kan ju vara svårare än det låter om programmet bara ger ett slumptal per körning. State måste du sparas och laddas mellan körningarna. Programmet kanske såg ut såhär typ innan problemet löstes:

int main()
{
srand(...);
return printf("%d\n", rand() % 6 + 1);
}

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

Löste det såhär;)

#include <iostream>
#include <ctime>
using namespace std;

void main()
{

float antal=0, slumptal=0, utfall=0, procent=0;

cout<< "Skriv in antal kast av tarning?"<<endl;
cin>> antal;

srand (time(0));

//Tärningen kastas

for
(int i = 0; i < antal; i++)

{
slumptal = rand ()%6 + 1;
std::cout<<slumptal<<endl;

//Antal sexor

if(slumptal == 6)
{
utfall++;
}

}

//Antal sexor
cout<<"antal sexor "<<utfall<<endl;

//Beräkna antalet sexor i procent.
procent = utfall / antal;

//Antal sexor i procent av antal.
cout<<"antal sexor i procent " <<procent<<endl;

}

Jag löste det cirka 10 minuter efter tråden...

Visa signatur

You cant dodge this bullet cause this aint The Matrix....

Permalänk
Medlem

Lite överkurs kanske men float är onödigt att använda, du tar upp mer minne än nödvändigt. Testa använda byte eller int.

Permalänk
Medlem

Ofta är float 32bitar, precis som int. En float kan dessutom beskriva alla heltal som en short (16bit) kan så man behöver inte vara rädd för heltalsprecisionen... Dock håller jag med, om man mara beskriver heltal ska man använda en heltals-datatyp. Om man dessutom bara beskriver positiva tal kan en unsigned vara på sin plats.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Jo men har har även procent längre ner..behöver decimaler..

Visa signatur

You cant dodge this bullet cause this aint The Matrix....

Permalänk
Medlem

I detta fall var du kanske bara intresserad av antalet sexor, men annars så skulle en array vara den snyggaste lösningen.

++antal[rand() % 6];

antal[0] är antalet ettor
antal[1] är antalet tvåor
etc.

vojnik: Om du vill ha procent i flyttal så är det ju bara att casta om ena talet till en float. procent ska ju självklart vara float.

procent = static_cast<float>(tal1) / tal2;

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MagnusL
I detta fall var du kanske bara intresserad av antalet sexor, men annars så skulle en array vara den snyggaste lösningen.

++antal[rand() % 6];

antal[0] är antalet ettor
antal[1] är antalet tvåor
etc.

vojnik: Om du vill ha procent i flyttal så är det ju bara att casta om ena talet till en float. procent ska ju självklart vara float.

procent = static_cast<float>(tal1) / tal2;

Tack ska du ha:)

Visa signatur

You cant dodge this bullet cause this aint The Matrix....