Update main.cpp

This commit is contained in:
vaegq 2025-05-23 09:33:56 +00:00
parent a794d3b57d
commit e9b3580b59

134
main.cpp
View file

@ -1,131 +1,67 @@
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <string> #include <string>
#include <vector> #include <windows.h>
#include <cstdlib> // dla rand() i srand()
#include <ctime> // dla time()
using namespace std; using namespace std;
// Struktura do przechowywania pytania i odpowiedzi void zapiszDane() {
struct Pytanie { string dane;
string pytanie; cout << "Podaj dane do zapisania: ";
string odpowiedz; cin.ignore();
}; getline(cin, dane);
// Funkcja do wczytywania pytań z pliku
vector<Pytanie> wczytajPytania() {
vector<Pytanie> listaPytan;
ifstream plik("pytania.txt");
ofstream plik("dane.txt", ios::app);
if (plik.is_open()) { if (plik.is_open()) {
string linia1, linia2; plik << dane << "\n";
plik.close();
// Czytamy plik linia po linii cout << "Dane dopisane do pliku.\n";
while (getline(plik, linia1)) { Sleep(2000);
if (getline(plik, linia2)) { system("cls");
Pytanie nowePytanie; } else {
nowePytanie.pytanie = linia1; cout << "Nie mozna otworzyc pliku do zapisu.\n";
nowePytanie.odpowiedz = linia2;
listaPytan.push_back(nowePytanie);
} }
} }
void wyswietlDane() {
ifstream plik("dane.txt");
if (plik.is_open()) {
string linia;
cout << "Zawartosc pliku:\n";
while (getline(plik, linia)) {
cout << linia << "\n";
}
plik.close(); plik.close();
} else { } else {
cout << "Nie moge otworzyc pliku z pytaniami!" << endl; cout << "Nie mozna otworzyc pliku do odczytu.\n";
} }
return listaPytan;
}
// Funkcja do zapisywania pytań do pliku
void zapiszPytania(vector<Pytanie> listaPytan) {
ofstream plik("pytania.txt");
if (plik.is_open()) {
for (int i = 0; i < listaPytan.size(); i++) {
plik << listaPytan[i].pytanie << endl;
plik << listaPytan[i].odpowiedz << endl;
}
plik.close();
} else {
cout << "Nie moge zapisac do pliku!" << endl;
}
}
// Funkcja do losowego wyboru pytania
void losowePytanie(vector<Pytanie> listaPytan) {
if (listaPytan.empty()) {
cout << "Brak pytan w bazie!" << endl;
return;
}
// Losujemy numer pytania
int losowyIndex = rand() % listaPytan.size();
cout << "Pytanie: " << listaPytan[losowyIndex].pytanie << endl;
cout << "Twoja odpowiedz: ";
string odpowiedz;
cin.ignore(); // Czyścimy bufor
getline(cin, odpowiedz);
if (odpowiedz == listaPytan[losowyIndex].odpowiedz) {
cout << "Dobra odpowiedz!" << endl;
} else {
cout << "Zla odpowiedz. Poprawna to: " << listaPytan[losowyIndex].odpowiedz << endl;
}
}
// Funkcja do dodawania nowego pytania
void dodajPytanie(vector<Pytanie> &listaPytan) {
Pytanie nowe;
cout << "Podaj pytanie: ";
cin.ignore(); // Czyścimy bufor
getline(cin, nowe.pytanie);
cout << "Podaj odpowiedz: ";
getline(cin, nowe.odpowiedz);
listaPytan.push_back(nowe);
zapiszPytania(listaPytan);
cout << "Pytanie dodane!" << endl;
}
// Funkcja wyświetlająca menu
void pokazMenu() {
cout << "\n==== MENU ====" << endl;
cout << "1. Losowe pytanie" << endl;
cout << "2. Dodaj pytanie" << endl;
cout << "3. Wyjdz" << endl;
cout << "Wybierz: ";
} }
int main() { int main() {
vector<Pytanie> pytania = wczytajPytania();
int wybor; int wybor;
// Inicjalizacja generatora liczb losowych
srand(time(0));
do { do {
pokazMenu(); cout << "\nMENU:\n";
cout << "1. Wpisz i zapisz dane\n";
cout << "2. Wyswietl dane\n";
cout << "3. Wyjdz\n";
cout << "Wybor: ";
cin >> wybor; cin >> wybor;
switch (wybor) { switch (wybor) {
case 1: case 1:
losowePytanie(pytania); system("cls");
zapiszDane();
break; break;
case 2: case 2:
dodajPytanie(pytania); system("cls");
wyswietlDane();
break; break;
case 3: case 3:
cout << "Koniec programu." << endl; cout << "Wyjscie z programu.\n";
break; break;
default: default:
cout << "Zly wybor!" << endl; cout << "Niepoprawny wybor.\n";
} }
} while (wybor != 3); } while (wybor != 3);