Rzut 2 kośćmi i wyświetlający komunikaty

1

Witam.
Mam problem z programem który ma za zadanie wczytywanie 2 liczb które stanowią liczbę wyrzuconych oczek i wyświetlający odpowiedni komunikat (wygrałeś, przegrałeś, rzucasz jeszcze raz). Komunikaty są zależne od ilości oczek, np.
2,9 -wygrales,
10,11-przegrales,
5,6-rzucasz jeszcze raz,
Z góry dziękuje za pomoc i podpowiedzi jak zrobić ten program:)

0
  1. To się nadaje do Newbie.
  2. Pokaż co już napisałeś, za gotowca się buli $$.

To ma być zwykły program konsolowy ? Użytkownik ma wprowadzać te liczby ?

Wskazówka (jak to napisać):

  1. Pobierasz od użytkownika 2 liczby.
  2. Z pomocą instrukcji warunkowych if...else podajesz komunikaty.
  3. Kończysz lub kontynuujesz w pętli while().
0

a od czego ma zależeć wygrana lub przegrana

0

Mam problem z programem

Jaki problem?

0

Pokaż ten program z którym masz problem i zaznacz miejsce w którym ten problem masz. Ale podejrzewam że to do działu praca.

0

Brutalnie zostalem wyrwany z pascala i nie do konca rozumiem to zadanie, bo do tego czasu uczyłem sie tylko o operatorach i klasach.Wiec też chcialbym sie dowiedzieć jakiej najlepiej biblioteki uzyc do losowania oraz w jakiej formie if i else czy tabeli czy tez case zrobic ten program. Czytalem troche o tym ale co forum to inne rozwiazanie.

0
revont napisał(a):

Wiec też chcialbym sie dowiedzieć jakiej najlepiej biblioteki uzyc do losowania (...)

Biblioteki standardowej: http://en.cppreference.com/w/c/numeric/random

0

Coś nie rozumiem, w zadaniu napisano - wczytywanie 2 liczb, a teraz dopytujesz się o losowanie?

0

Tak jest napisane wczytywanie. W takim razie mozna zrobic przynajmniej 3 sposoby ten program: wczytywanie z pliku, wklepywanie z klawiatury i losowanie. Nic w zadaniu o plikach nie ma wiec ta opcja odpada, wklepywanie z klawiatury tez raczej odpada bo za łatwo by bylo troche wiec pozostaje losowanie.

0

No to z czym masz problem ?

Do losowania użyj rand(). Ogranicz sobie zakres losowania do liczb 1...6, wylosowane liczby zapisuj sobie w dwóch zmiennych, mogą być typu unsigned short int. Następnie zrób sobie odpowiednie warunki z pomocą if...else. Jeśli ma być w pętli, to użyj while(). Tyle. Spróbuj coś naklepać, jak nie będziesz wiedział pisz. A jak jesteś leń, to jest taki dział http://4programmers.net/Forum/Praca :)

0

na razie napisalem cos takiego:

#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main()

{
int i,k,m;

cout("Pierwsza liczba oczek")>>endl;
i= rand % 7+1;
srand((unsigned)time(NULL));
cin>>i;

cout ("Druga liczba oczek")>>endl;
k= rand % 7+1;
srand((unsigned)time(NULL)) ;
cin>>k;

cout ("Liczba wszystkich oczek")<<i+k<<endl;
cin>>m;
switch(m)
{

case1 :
m= 2;
cout<<("Przegrywasz");
break;

case2 :
m = 3;
cout<<("Przegrywasz");
break;

case3 :
m = 12;
cout<<("Przegrywasz");
break;

case4 :
m = 7;
cout<<("Wygrywasz");
break;

case5:
m =1;
cout<<("Wygrywasz");
break;

default:
cout<<("Rzucasz jeszcze raz");
break;
}

system("pause");
return 0;

}

0

Zdajesz sobie sprawę że na chwilę obecną rzucasz kostką k8? czyli masz liczby od 1 do 8.na każdej kostce, co daje od 2 do 16. poza tym srand daje się tylko raz, przed pierwszym losowaniem. Co więcej u ciebie powyższe i tak nie mają znaczenia bo zarówno rzuty jak i wynik są nadpisywane tym co użytkownik wpisze. Więc się z łaski swojej zdecyduj czy losujesz czy go pytasz. Jak to drugie to powinieneś dodać if-a lbo ify w celu ochrony przed "erpegowymi" rzutami np wpisaniem 88.

0

nie bądźcie hieny dla nowego D
dobra. ja mu napisze ten program, tylko ktoś mi przypomni o co chodzi z funkcją rand(), o srand() pamiętam, ale coś jeszcze jest potrzebne zeby mi nie powtarzało ?

0

Najpierw musi się zdecydować czy losuje program czy użytkownik wpisuje te liczby, co ciekawe póki co wynik dodawania też wpisuje user (albo źle patrzę albo program tego w żadnym miejscu nie liczy). Potem mu go ktoś ładnie poprawi.

0

@sig, ten program nie może coś robić lub nie robić.
Dopóki nie pousuwa się akie kwiatki:

cout("Pierwsza liczba oczek")>>endl;
0

Z tego co czytalem rand % 7 to liczby od 0 do 6 a jedynke sie dodaje aby była liczbą najmniejsza jaka moze zostac wylosowana bo zero odpada. W pierwotnym zamyśle program ma wylosowac 2 liczby, dodac je do siebie i na koncu wyslietlic odpowiedni komunikat.

0
unsigned word m,n,s;
//wprowadzasz wartosc do m z przedziału 1-6, do n również
s=m+n;
if (s==2 || s==3 || s==12)
std::cout<<"przegrales";
if(s==7 || s==11) 
std::cout<<wygrałes;
else 
cout<<"losuj jeszcze raz";

dajesz to w pętle czy jak tam chcesz i masz, a to jak będziesz sobie wybierał te liczby to już twoja sprawa, zdecyduj sie- palch czy random :D

0

Jako że udało mi się w ramach testów "wyrzucić" siedem zmieniłem randa. A o to i sprawny program

 
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <time.h>


using namespace std;

int main()

{
int i,k,m;
 srand(time(0));

cout << ("Pierwsza liczba oczek") << endl;
i= rand() % 6+1;
cout << i << endl;
cout <<  ("Druga liczba oczek") << endl;
k= rand() % 6+1;
cout << k << endl;
m=i+k;
cout <<  ("Liczba wszystkich oczek")<< m <<endl;
switch(m)
{

case 2 :
cout<<("Przegrywasz");
break;

case 3 :
cout<<("Przegrywasz");
break;

case 12 :
cout<<("Przegrywasz");
break;

case 7 :
cout<<("Wygrywasz");
break;

case 1:
cout<<("Wygrywasz");
break;

default:
cout<<("Rzucasz jeszcze raz");
break;
}

       system("pause");
        return 0;
}

ps jako że spod Linuksa system("pause"); miałem zakomentowany.
pps zwróć uwagę na "konstrukcję" switcha, robiłeś to całkiem nie tak

0
#include <cstdlib>
#include <iostream>
#include <stdlib.h>

 
 
using namespace std;
 
int main()
 
{
int i,k,s;
 srand(time(0));
 
cout << ("Pierwsza liczba oczek") << endl;
i= rand() % 6+1;
cout << i << endl;
cout <<  ("Druga liczba oczek") << endl;
k= rand() % 6+1;
cout << k << endl;
s=i+k;
cout <<  ("Liczba wszystkich oczek")<< s <<endl;


if (s==2 || s==3 || s==12){
std::cout<<"przegrales";}
else
if(s==7 || s==11) {
std::cout<<wygrałes;}
else 
cout<<"losuj jeszcze raz";
 
       system("pause");
        return 0;
}
0

@sig, wystarczy tylko małą kosmetykę i mamy:

#include <iostream>
#include <time.h>
using namespace std;
 
int main()
  {
   srand(time(0));
   while(true)
     {
      int i=rand()%6+1,k=rand()%6+1,m=i+k;
   
      cout
         <<"Pierwsza liczba oczek: "<<i<<endl
         <<"Druga liczba oczek: "<<k<<endl
         <<"Liczba wszystkich oczek: "<<m
         <<endl
        ;
      if((m==2)||(m==3)||(m==12))
        {
         cout<<"Przegrywasz"<<endl;
         break;
        }
      else if(m==7)
        {
         cout<<"Wygrywasz"<<endl;
         break;
        }
      cout<<"Rzucasz jeszcze raz (wciśnij enter)"<<endl;
      cin.sync();
      cin.get();
     }    
   cin.sync();
   cin.get();
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1