[C++] Tablica jednowymiarowa 4 elementowa - gra w kości
Ostatnio zmodyfikowano 2016-05-28 13:54
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. #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; } } . |
|
carlosmay |
» 2016-05-28 12:34:40 #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'; } |
|
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.. |
|
arciobus |
» 2016-05-28 13:23:59 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. |
|
nootopozdro Temat założony przez niniejszego użytkownika |
» 2016-05-28 13:54:04 Super, dzięki arciobus !Wszystko już wyszło :) |
|
« 1 » |