Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Tablica jednowymiarowa 4 elementowa - gra w kości

Ostatnio zmodyfikowano 2016-05-28 13:54
Autor Wiadomość
nootopozdro
Temat założony przez niniejszego użytkownika
[C++] Tablica jednowymiarowa 4 elementowa - gra w kości
» 2016-05-28 11:28:30
Witam. Mam problem jak określić zbiór tablicy 4 elementowej (robię takie zadanie po raz pierwszy).

Treść zadania:
W pewnej grze każdy z graczy rzuca czterema kośćmi. Za wynik danego gracza uznawana jest różnica pomiędzy najwyższym a najniższym wynikiem z jego kości (np. dla wyników 2, 2, 3, 6 wynikiem jest 4). Napisać funkcję symulującą taki rzut i zwracającą różnicę pomiędzy najniższym a najwyższym wynikiem. Funkcja ma jeden parametr — liczbę ścian kości. Można wykorzystać którąś z funkcji z zadania 4. Funkcja ta ma ponadto (w celach testowych) wyświetlać wylosowane wartości.

Ponadto napisać program, który wykona kilka takich losowań (ile i jakimi kośćmi podaje użytkownik) wyświetlając ich wyniki.



 
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <time.h>
using namespace std;

int rzut_koscia( int liczba_scian_kosci ) {
    int rzut = rand() % liczba_scian_kosci;
    return rzut + 1;
}

int main() {
    srand( time( 0 ) );
    int wylosowane;
    int liczba_scian_kosci;
    cout << " Liczba kosci : 4 " << endl;
    cout << "Ile scian ? " << endl;
    cin >> liczba_scian_kosci;
    cout << "Ile rzutow ? " << endl;
    int ile_rzutow;
    cin >> ile_rzutow;
   
   
    for( int i = 0; i < ile_rzutow; i++ )
    {
       
        cout << "Wylosowano : ";
        for( int i = 0; i < 4; ++i ) {
            cout << rzut_koscia( liczba_scian_kosci ) << ", ";
        };
       
       
        int tab[ 4 ] = { ???? }
        int min;
        min = tab[ 0 ];
        for( int i = 1; i < 4; i++ )
        if( min > tab[ i ] )
             min = tab[ i ];
       
        cout << "min " << min << endl;
       
        cout << "\nWynik rzutu :" << endl;
       
    }
}
.
P-148644
carlosmay
» 2016-05-28 12:34:40
C/C++
#include <random>
#include <iostream>
#include <array>
#include <algorithm>

int throwDiceResult( std::default_random_engine & dre, int iDiceMin, int iDiceMax )
{
    std::uniform_int_distribution < int > distance( 1, 6 );
    return distance( dre );
}

int difference( std::array < int, 4 > iResults )
{
    return *( std::max_element( iResults.begin(), iResults.end() ) ) -
    *( std::min_element( iResults.begin(), iResults.end() ) );
}

auto main()->int
{
    int diceMin = 1;
    int diceMax = 6;
    std::random_device rd;
    std::mt19937 mtgen( rd() );
    std::array < int, 4 > results;
   
    for( int & element: results )
         element = throwDiceResult( mtgen, diceMin, diceMax );
   
    for( const int & element: results )
         std::cout << element << ' ';
   
    std::cout << '\n';
   
    std::cout << "Wynikiem tej kolejki rzutow kostka wynosi: " << difference( results ) << '\n';
}
P-148648
nootopozdro
Temat założony przez niniejszego użytkownika
» 2016-05-28 12:40:43
Niestety ale jestem kompletnie początkująca i nic z powyzszego zapisu nie rozumiem..
Na razie ucze sie uzywając najprostszych  podstawowych funkcji z możliwych..
P-148649
arciobus
» 2016-05-28 13:23:59
C/C++
for( int i = 0; i < 4; ++i ) {
    A[ i ] = rzut_koscia( liczba_scian_kosci );
    cout << A[ i ] << endl;
};

Mniej więcej coś takiego.  Pamiętaj że możesz zagnieżdżać w sobie funkcje np max(max(,,),max(,,)) i zwracać wartości np return rand()%number+1.
P-148650
nootopozdro
Temat założony przez niniejszego użytkownika
» 2016-05-28 13:54:04
Super, dzięki arciobus !Wszystko już wyszło  :)
P-148651
« 1 »
  Strona 1 z 1