x-kom hosting

C++ Jak losować komendy?

Kacperjas
utworzono
utworzono (edytowane)

Witam mam pytanie powiedzmy że mam program konkursowy (quiz [Nie wiem jak pisać :D]) i mam pytanie pod funkcją (...):
[quote]
std::cout<< "Jak się nazywal samolot ktory rozbil sie pod smolenskiem?"<<std::endl;
std::cout<< "a) F16"<<std::endl;
std::cout<< "b) Tupolev"<<std::endl;
//Nie wiem jak pisać "Tupolev :-|
std::cin>> nOdpowiedz;
if ( nOdpowiedz == B )
{
const int PUNKTY = 1;
}
[/quote]
I pare razy cos takiego lecz co zrobić aby program losował pytania za pomocą czasu?
Ale też żeby zamiast zmieniać to dodawał do stałej "PUNKTY" jeden punkt?
Proszę w nowej odpowiedzi na czym polega "inkrementacja" i "dekrementacja".
Prosze o szybką odpowiedz TO OD WAS ZALEŻY CZY NAPISZĘ PROGRAM!!! :D

leggo
komentarz
komentarz

liczby z przedziału od 0 do 10 losujesz tak:
[CODE]
rand() % 10;
[/CODE]

Wcześniej w kodzie wstaw jeszcze
[CODE]
srand(time(NULL));
[/CODE]

pytanko
komentarz
komentarz

Od razu mowie ze nie jestem programista ani z wyksztalcenia ani hobby ale jezeli chcesz cos losowac to uzyj funkcji

random()%x+1 - wylosuje ci to liczby z przedzialu (0,x) czyli jak chcesz wylosowac liczby z przedzialu od 0 do 10 to napisz - random()%11.
Do tego w funkcji main wpisz srand(time(0)). I oznacz sobie te pytania jakos i uzyj switch i case :PP

Mam nadzieje ze ci pomoglem chociaz szczerze to w to watpie :D

Kacperjas
komentarz
komentarz (edytowane)

Ale co zrobić by pod liczbami kryły się komendy czyli:
[quote]
[color=#666600][color=#000000]srand[/color][color=#666600]([/color][color=#000000]time[/color][color=#666600]([/color][color=#000000]NULL[/color][color=#666600]));[/color][/color]
[color=#000000]rand[/color][color=#666600]()[/color] [color=#666600]%[/color] [color=#006666]10[/color][color=#666600];[/color]
//powiedzmy że wylosowało 3 jak zrobić aby komenda była "wklejona" w odpowiednią część kodu?
[/quote]
Nie rozumiem czy możecie podać pełny kod?

Oraz by nie powtarzały się a "[color=#00FF00]rand() % 10[/color][color=#00FF00];" [/color]może np. dwa razy wylosować 3 co zrobić a wtedy "[color=#00FF00]switch[/color]" nic nie zrobi!?
EDIT: Zrobi ale nie zatrzyma i każe kolejny raz losować bo "switch" tylko wyświetla z kolumn :(

leggo
komentarz
komentarz

Pytania musisz mieć zgrupowane w jakimś kontenerze, najprościej dla Ciebie będzie pewnie wsadzić je do tablicy.
Później losujesz sobie liczbę z zakresu odpowiadającego ilości pytań w tablicy. Wylosowana liczba odpowiada indeksowi pytania w tablicy.

Kacperjas
komentarz
komentarz (edytowane)

Myślę żeby w trakcie dzałania programu zapisywało liczby i w trakcie powtórzenia (liczb) zatrzymywało i jeszcze raz wywoływało funkcje "[color=#00FF00]rand() % 10;[/color]"

OK ale jestem "świeżak" w C++ czy możecie podać fragment gotowego kodu BAAARDZO PROSZĘ :D

Jeszcze problem powtórzeń pytań patrz UP.

leggo
komentarz
komentarz

Wrzuć tutaj to co napisałeś i wtedy możemy coś poprawiać. To ma być Twój kod, nie mój.

Co do powtarzania liczb w losowaniu. Możesz zapamiętywać sobie liczby jakie zostały już wylosowane, ale takie rozwiązanie sprawdzi się tylko jeśli chcesz wylosować tylko niektóre pytania (np. 10 pytań z 20). Jeśli chcesz wylosować wszystkie pytania, to wylosowanie dostępnego pod koniec może być trudne - gdy masz np. 100 pytań i wylosujesz już 99 prawdopodobieństwo trafienia tego ostatniego jest małe i program będzie musiał dużo razy powtarzać losowanie.

Kacperjas
komentarz
komentarz

[quote name='leggo' timestamp='1339769461' post='1521194']
Wrzuć tutaj to co napisałeś i wtedy możemy coś poprawiać. To ma być Twój kod, nie mój.

Co do powtarzania liczb w losowaniu. Możesz zapamiętywać sobie liczby jakie zostały już wylosowane, ale takie rozwiązanie sprawdzi się tylko jeśli chcesz wylosować tylko niektóre pytania (np. 10 pytań z 20). Jeśli chcesz wylosować wszystkie pytania, to wylosowanie dostępnego pod koniec może być trudne - gdy masz np. 100 pytań i wylosujesz już 99 prawdopodobieństwo trafienia tego ostatniego jest małe i program będzie musiał dużo razy powtarzać losowanie.
[/quote]
Poczekaj...

pytanko
komentarz
komentarz

Latwiej by bylo gdyby te pytania nie byly wybierane losowo tylko lecialy w takiej kolejnosci jak je zapisales.

Kacperjas
komentarz
komentarz

[quote]
[indent=1][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]#include[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]<iostream>[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]#include[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]<conio.h>[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]#include[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]<string>[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]#include[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]<windows.h>[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]const[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]int[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2] PUNKTY = 0[/size][/font][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]int [/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]A,B,C,D,E;[/size][/font][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]int [/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]V[/size][/font][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]void [/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]main()[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]{[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]std::cout<< [/size][/font][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]"-Pytanie na banie-"[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]<<std::endl;[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]std::cout<< [/size][/font][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]"Pisz z CAPSLOCKIEM"[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]<<std::endl;[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]system ([/size][/font][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]"pause"[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]);[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]std::cout<< [/size][/font][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]"1.Najblizej jakiego kontynentu zatonol Tytanik?"[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]<<std::endl;[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]std::cout<< [/size][/font][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]"a) Ameryka Południowa "[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]<<std::endl;[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]std::cout<< [/size][/font][/size][/font][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515][font=Consolas][size=2][color=#A31515]"b) Afryka"[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2]<<std::endl;[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]std::cin>> V;[/size][/font][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]if [/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2](V == A)[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]{[/size][/font][/size][/font]
[font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]const[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2] [/size][/font][/size][/font][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF][font=Consolas][size=2][color=#0000FF]int[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Consolas][size=2][font=Consolas][size=2] PUNKTY = 1[/size][/font][/size][/font]
[font=Consolas][size=2][font=Consolas][size=2]}[/size][/font][/size][/font][/indent]
[/quote]
Narazie mam tyle bo nie wiem jak zamiast zmieniać dodawać liczbę 1 do PUNKTY

leggo
komentarz
komentarz (edytowane)

Można też po użyciu usuwać wylosowane pytanie z tablicy i losować za każdym razem liczbę z mniejszego przedziału. (Do takiego rozwiązania przydały by się tablice dynamiczne).

Innym sposobem może być też przetasowanie (za pomocą losowania) pytań przed ich wyświetleniem.


edit.
1. Po co [b]punkty[/b] są stałą? Zrób z nich zmienną.
2. W if-ie porównujesz zmienną [b]V[/b] ze zmienną [b]A[/b] ale nie zapisałeś wcześniej nic w zmiennej [b]A[/b].
3. Powtórzę jeszcze raz: pytania musisz mieć gdzieś zgrupowane. Wsadź je do tablicy lub do listy. Najlepiej stwórz sobie strukturę w której będziesz miał treść pytania, odpowiedzi i informację która odpowiedź jest poprawna.

pytanko
komentarz
komentarz

Dziwnie sie troche do tego zabierasz. Moge ci pokazac moj stary program jak kiedys bawilem sie w C++. Przerob sobie tylko pytania odpowiedzi i nie smiej sie z jakosci samych pytan :D

[log]

#include <cstdlib>
#include <iostream>
#include <string.h>

using namespace std;


void all (int &suma,char znak, string pyt)
{
char l;
cout<<pyt;
cout<<"Wybierz odpowiedz: ";
cin>>l;
if (l==znak)
{
suma=suma+1;
cout<<"Dobra odpowiedz!\n";
}
else
{
cout<<"Zla odpowiedz!\n";
}
}

int main()
{
int p=0;
string imie, a, b,c,d,e,f,g,h,i,j,k,l,m,n,o,u,q,r,s,t;
int x,z,y;


a="W celi o jakim numerze zamkniety byl Scofield?\n a) 20\n b) 38\n c) 40\n d) 44\n";
b="Jak mial na imie kuzyn t-bag'a?\n a) James\n b) Johny\n c) Jimmy\n d) Joe\n";
c="Ile lat odsiaduje D.B. Cooper?\n a) 30\n b) 40\n c) 50\n d) 60\n";
d="Ktory szeryf pilnowal Fibonacciego do czasu przesluchania?\n a) Solomon\n b) Putnam\n c) Pronzo\n d) Marx\n";
e="Ile miesiecy pozostalo Sucre do wyjscia warunkowego?\n a) 16\n b) 18\n c) 21\n d) 22\n";
f="Jak nazywalo sie miasto w ktorym ukryl skarb Westmorlend?\n a) Toledo\n b) Utah\n c) Illnois\n d) Toole\n";
g="Co Sara dostala od ojca na swoje 29 urodziny?\n a) Bluzke\n b) Maskotke\n c) Kwiaty\n d) Naszyjnik\n";
h="Jaki stopien ma Bellick?\n a) Sierzant\n b) Major\n c) Dowodca kompani\n d) Kapitan\n";
i="Co michael wrzucil aby zrobic zwarcie elektrycznego fotela?\n a) Metalowy pret\n b) Szczura\n c) Noz kuchenny\n d) Szklanke z woda\n";
j="Jak ma na imie corka Franklina?\n a) Meg\n b) Dede\n c) Dorothy\n d) Sally\n";
k="Ile dolarow kosztuje wejscie do gry w karty za kuchnia?\n a) 5\n b) 50\n c) 500\n d) 25\n";
l="Jak wiezniowie nazywali oddzial psyhiatryczny?\n a) Izolatka\n b) Karniak\n c) Akwarium\n d) Psiarnia\n";
m="Jakie jest prawdziwe nazwisko agenta Paula Kellermana?\n a) Kravecki\n b) Kravitz\n c) Kravell\n d) Owen\n";
n="Jaka ulica wiezniowie chca uciec po ucieczce?\n a) Fitz\n b) Percy\n c) English\n d) Green\n";
o="Jak sie nazywa aktor grajacy Abruzziego?\n a) Robert Knepper\n b) Adam Malysz\n c) Mel Gibson\n d) Peter Stormare\n";
u="Z jakiej okazji naczelnik chcial podarowac swojej zonie miniature palacu?\n a) 50 urodzin\n b) Powrotu do zdrowia\n c) Przejscia na emeryture\n d) 40 rocznicy slubu\n";
q="Za co LJ zostal zlapany przez policje?\n a) Gwalt 10 latki\n b) Bijatyke w klubie\n c) Kradziez zegarka\n d) Przemyt narkotykow\n";
r="Kto zabil kota D.B.Cooper'a?\n a) T-Bag\n b) C-Note\n c) Bellick\n d) Geary\n";
s="Podczas rozmowy z zona Steadmana Nick i Veronica podali sie za?\n a)Czlonkow organizacji praw ofiar\n b) Wspolnikow meza\n c) Bieglych sadowych\n d) Znajomych jej adkowokata\n";



cout<<"PRISON BREAK QUIZ version 1.0 (2006) by Krzychu\nAll rights reserved\n\n";
cout<<"Podaj swoje imie: \n";
cin>>imie;

z=0;

for (x=0;x<19;x++)
{
cout<<"\n";

switch(x)

{

case 0:
all (p,'c',a);
break;
case 1:
all (p,'a',b);
break;
case 2:
all (p,'d',c);
break;
case 3:
all (p,'c',d);
break;
case 4:
all (p,'a',e);
break;
case 5:
all (p,'d',f);
break;
case 6:
all (p,'c',g);
break;
case 7:
all (p,'d',h);
break;
case 8:
all (p,'b',i);
break;
case 9:
all (p,'b',j);
break;
case 10:
all (p,'a',k);
break;
case 11:
all (p,'c',l);
break;
case 12:
all (p,'a',m);
break;
case 13:
all (p,'a',n);
break;
case 14:
all (p,'d',o);
break;
case 15:
all (p,'d',u);
break;
case 16:
all (p,'d',q);
break;
case 17:
all (p,'c',r);
break;
case 18:
all (p,'a',s);
break;
}

}


cout<<imie<<"!!!, twoj wynik: "<<p<<" na 19\n";





system("PAUSE");
return EXIT_SUCCESS;
}

[/log]

Kacperjas
komentarz
komentarz (edytowane)

Hmm...
Tylko czy znacie jakąś książke z wyjaśnieniem podstaw (Przynajmniej tego /\UP/\) C++

leggo
komentarz
komentarz

Tematów dotyczących wyboru książki było na tym forum już kilaka przejrzyj sobie.

Do takich podstaw wystarczą Ci zdecydowanie kursy internetowe, których jest na pęczki - wystarczy poszukać.

pytanko
komentarz
komentarz

Ja polecam Symfonie C++ Grebosza. Bardzo latwym jezykiem napisane sa. Sklada sie z 3 tomow ale zeby napisac taki program to wystarczy ogarnac w miare polowe pierwszego tomu. Oczywiscie kursy w necie tez mozesz poczytac.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.