Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- using namespace std;
- const char * crt = "\n---------------------------\n";
- bool pokrenut = false;
- struct Odgovor {
- bool tacan;
- char * tekstOdgovora;
- };
- struct Pitanje {
- char * tekstPitanja;
- Odgovor odgovori[5];
- int brojOdgovora;
- int brojBodova;
- };
- void DodajPitanje(Pitanje * p)
- {
- char tekst[100];
- cout << "Unesite tekst pitanja -> ";
- cin.getline(tekst, 100);
- int size = strlen(tekst);
- p->tekstPitanja = new char[size + 1];
- strcpy_s(p->tekstPitanja, size + 1, tekst);
- strcpy_s(tekst, "");
- cout << "Koliko odgovora unosite -> ";
- do
- {
- cin >> p->brojOdgovora;
- cin.ignore();
- } while (p->brojOdgovora < 0 || p->brojOdgovora > 5);
- for (int i = 0; i < p->brojOdgovora; i++)
- {
- cout << "Odgovor " << i + 1 << ". -> ";
- cin.getline(tekst, 100);
- int size = strlen(tekst);
- p->odgovori[i].tekstOdgovora = new char[size + 1];
- strcpy_s(p->odgovori[i].tekstOdgovora, size + 1, tekst);
- strcpy_s(tekst, "");
- }
- int tacan;
- cout << "Koji od unesenih je tacan odgovor -> ";
- cin >> tacan;
- cin.ignore();
- p->odgovori[tacan - 1].tacan = true;
- int bodovi;
- cout << "Koliko bodova nosi ovo pitanje -> ";
- cin >> p->brojBodova;
- cin.ignore();
- }
- int * PokreniKviz(Pitanje * pitanja[], int max)
- {
- if (pokrenut == true)
- return nullptr;
- int * odgovori = new int[max], br = 0, unos;
- for (int i = 0; i < max; i++)
- {
- if (pitanja[i] == nullptr)
- continue;
- system("cls");
- cout << crt << pitanja[i]->tekstPitanja << crt;
- for (int j = 0; j < pitanja[i]->brojOdgovora; j++)
- cout << j + 1 << ". " << pitanja[i]->odgovori[j].tekstOdgovora << endl;
- cout << crt << "Vas odgovor -> ";
- cin >> unos;
- odgovori[br++] = unos - 1;
- cin.ignore();
- cout << crt;
- }
- pokrenut = true;
- return odgovori;
- }
- void PrikaziRezultat(Pitanje * pitanja[], int * odgovori, int max)
- {
- int i = 0, bodovi = 0, ukupniBodovi = 0;
- cout << crt << "REZULTATI" << crt;
- while (pitanja[i] != nullptr)
- {
- if (pitanja[i]->odgovori[odgovori[i]].tacan == true)
- {
- bodovi += pitanja[i]->brojBodova;
- ukupniBodovi += pitanja[i]->brojBodova;
- cout << i + 1 << ". Pitanje -> TACNO" << endl;
- }
- else
- {
- ukupniBodovi += pitanja[i]->brojBodova;
- cout << i + 1 << ". Pitanje -> NETACNO" << endl;
- }
- i++;
- }
- cout << crt << "USPJEH: " << bodovi << "/" << ukupniBodovi << " (" << (int)((float)(bodovi / ukupniBodovi) * 100) << "%)" << crt;
- system("Pause");
- }
- void Dealociraj(Pitanje * pitanja[], int * odgovori, int brojPitanja)
- {
- delete[] odgovori;
- odgovori = nullptr;
- for (int i = 0; i < brojPitanja; i++)
- {
- delete pitanja[i];
- pitanja[i] = nullptr;
- }
- }
- int PrikaziMenu() {
- system("cls");
- int izbor;
- cout << crt << "\t::MENU::" << crt;
- cout << "1. Dodaj pitanje" << endl;
- cout << "2. Promijeni odgovor na pitanje" << endl;
- cout << "3. Pokreni kviz" << endl;
- cout << "4. Prikazi rezultat" << crt;
- cout << "5. Kraj" << crt;
- do {
- cout << "Vas izbor -> ";
- cin >> izbor;
- cin.ignore();
- } while (izbor < 1 || izbor>5);
- system("cls");
- return izbor;
- }
- void main() {
- const int maxPitanja = 6;
- int trenutnoPitanja = 0, izbor = 0;
- Pitanje * ispitPRII[maxPitanja];
- int * odgovoriNaPitanja = nullptr;
- for (int i = 0; i < maxPitanja; i++)
- ispitPRII[i] = nullptr;
- /*VRSITI VALIDACIJU KORISNIKOVIH UNOSA TE GA ONEMOGUCITI DA UNOSI VRIJEDNOSTI KOJE NISU VALIDNE*/
- do {
- izbor = PrikaziMenu();
- if (izbor == 1) {
- ispitPRII[trenutnoPitanja] = new Pitanje();
- DodajPitanje(ispitPRII[trenutnoPitanja]);
- /*
- Unesite tekst pitanja -> U kojem gradu se nalazi FIT?
- Koliko odgovora unosite -> 4
- Odgovor 1 -> Mostar
- Odgovor 2 -> Sarajevo
- Odgovor 3 -> Tuzla
- Odgovor 4 -> Bihac
- Koji od unesenih je tacan odgovor -> 1
- Koliko bodova nosi ovo pitanje -> 3
- */
- trenutnoPitanja++;
- }
- else if (izbor == 2) {
- /*PITANJA SE MOGU MIJENJATI SAMO AKO KVIZ NIJE URADJEN!*/
- //PromijeniOdgovor(ispitPRII, trenutnoPitanja);
- /*
- Unesite odgovor ili dio odgovora za pretragu -> ac
- Odgovor Bihac pronadjen u pitanju: U kojem gradu se nalazi FIT?
- Da li je ovo odgovor koji biste zeljeli promijeniti (d/n) -> d
- Unesite novi odgovor -> Zenica
- Da li zelite postaviti novi odgovor kao tacan (d/n) -> d
- */
- }
- else if (izbor == 3) {
- /*ONEMOGUCITI VISESTRUKO POKRETANJE KVIZA!*/
- //if (trenutnoPitanja >= 3) /*KVIZ MORA IMAT NAJMANJE 3 PITANJA*/
- odgovoriNaPitanja = PokreniKviz(ispitPRII, maxPitanja);
- /*
- -------------------------------
- 1. U kojem gradu se nalazi FIT?
- -------------------------------
- 1. Mostar
- 2. Sarajevo
- 3. Tuzla
- 4. Zenica
- -------------------------------
- Vas odgovor -> 1
- -------------------------------
- 2. Naredno pitanje...
- */
- }
- else if (izbor == 4) {
- /*REZULTATI SE PRIKAZUJU SAMO AKO JE KVIZ URADJEN*/
- PrikaziRezultat(ispitPRII, odgovoriNaPitanja, maxPitanja);
- /*
- -------------------------------
- REZULTATI
- -------------------------------
- 1. Pitanje -> TACNO
- 2. Pitanje -> NETACNO
- 3. Pitanje -> NETACNO
- ...
- -------------------------------
- USPJEH: 10/20 BODOVA (50%)
- -------------------------------
- */
- }
- } while (izbor != 5);
- /*oslobađa zauzetu memoriju*/
- Dealociraj(ispitPRII, odgovoriNaPitanja, trenutnoPitanja);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement