#include // std:: #include // std::ifstream #include // std::vector #include // std::random #include // std::sort // zlicza liczbe wszystkich odpowiedzi z pliku // czyli zwraca, ile jest wszystkich pytan na egzaminie int pobierz_liczbe_pytan() { std::ifstream plik("odp.txt"); char c; int licznik = 0; while (plik >> c) { // std::cout << "Literka: " << c << '\n'; licznik++; } plik.close(); return licznik; } // funkcja zwraca vector typu z odczytanymi z pliku wartosciami // odpowiedzi dla poszczegolnych pytan std::vector pobierz_poprawne_odpowiedzi() { std::ifstream plik("odp.txt"); std::vector v; char c; while(plik >> c) { v.push_back(c); } plik.close(); return v; } // losuje liczbe z przedzialu zawiera w sobie liczbe // true - jesli zawiera // false - jesli nie zawiera bool sprawdz_czy_zawiera(std::vector v, int num) { // std::cout << "v.size = " << v.size() << '\n'; for(int i=0; i losuj_unikalne_z_przedzialu(int min, int max, int ile) { std::vector v; int ile_wylosowano=0; while(ile_wylosowano != ile) { int wylosowana = losuj_z_przedzialu(min, max); // std::cout << "Unikalne losowanie: "<< wylosowana << '\n'; if (sprawdz_czy_zawiera(v, wylosowana) == true) { continue; } else { // std::cout << "Wylosowano unikalna liczbe: "<< wylosowana << '\n'; v.push_back(wylosowana); ile_wylosowano++; } } return v; } void print_vector(std::vector v) { for(int i=0; i v) { std::ofstream plik("uczestnik.txt"); for(int i=0; i> ile_poprawnych; // sprawdzamy, czy dzialanie ma sens if(ile_poprawnych > liczba_pytan) { std::cout << "Liczba poprawnych odpowiedzi nie moze byc wieszka niz liczba pytan!" << '\n'; exit(1); } // vector poprawnych odpowiedzi std::vector odpowiedzi = pobierz_poprawne_odpowiedzi(); // vector z numerami (indeksami) wylosowanych poprawnych odpowiedzi std::vector unikalne = losuj_unikalne_z_przedzialu(0, liczba_pytan, ile_poprawnych); // sortujemy vector rosnÄ…co std::sort(unikalne.begin(), unikalne.end()); // print_vector(unikalne); std::cout << "----------------------" << '\n'; std::vector uczestnik; int unikalne_iterator = 0; for(int i=0; i" << dobra_odpowiedz << "<" << '\n'; unikalne_iterator++; uczestnik.push_back(dobra_odpowiedz); } else { char zla_odpowiedz = losuj_zla_odpowiedz(dobra_odpowiedz); // std::cout << "Zla odpowiedz: "<< zla_odpowiedz << '\n'; std::cout << zla_odpowiedz << '\n'; uczestnik.push_back(zla_odpowiedz); } } // zapisz_uczestnika(uczestnik); return 0; }