wiktortokumpel

testownik obrzydliwy wektorowski

Jun 13th, 2022
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.22 KB | None | 0 0
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include <QMainWindow>
  5. #include <vector>
  6. #include "tekst.h"
  7.  
  8. QT_BEGIN_NAMESPACE
  9. namespace Ui { class MainWindow; }
  10. QT_END_NAMESPACE
  11.  
  12. class MainWindow : public QMainWindow
  13. {
  14.     Q_OBJECT
  15.  
  16.  
  17.  
  18. public:
  19.     MainWindow(QWidget *parent = nullptr);
  20.     ~MainWindow();
  21.  
  22. private slots:
  23.     void on_actionZako_cz_triggered();
  24.  
  25.     void on_pushButton_clicked();
  26.  
  27.     int liczenieplikow();
  28.  
  29.     int losowaniepytania();
  30.  
  31.     int wszystkie_powtorzenia();
  32.  
  33.     int start();
  34.  
  35.     int ilosc_pozostalych_pytan();
  36.  
  37.  
  38. private:
  39.     Ui::MainWindow *ui;
  40. //    QString(nazwapliku);
  41.     QString prawidlowa_odpowiedz;
  42.     QString odpowiedz;
  43.  
  44.     int pytanie = 1;
  45.     int dodatkowe_powtorzenia = 3;
  46.     int powtorzenia_startowe = 3;
  47.  
  48.  
  49.     std::vector<int> powtorzenia = std::vector<int>(liczenieplikow(), 3);
  50.     std::vector<int> wystapienia = std::vector<int>(liczenieplikow(), 0);
  51.  
  52. };
  53. #endif // MAINWINDOW_H
  54.  
  55. //*************************************************************************************8
  56.  
  57. #include "mainwindow.h"
  58. #include "ui_mainwindow.h"
  59. #include <QFileDialog>
  60. #include <QTextStream>
  61. #include <QFile>
  62. #include <filesystem>       //jesli jest problem z ta biblioteka skorzystac z nowszej wersji MinGW
  63. #include <cstdlib>
  64. #include <ctime>
  65. #include <vector>
  66. #include <QPixmap>
  67.  
  68.  
  69. MainWindow::MainWindow(QWidget *parent)
  70.     : QMainWindow(parent)
  71.     , ui(new Ui::MainWindow)
  72. {
  73.     ui->setupUi(this);
  74.     setWindowTitle("Testownik");
  75.    // setWindowIcon(QIcon(""));
  76.  
  77.     ui->progressBar->setValue(0);
  78.     srand(time(NULL));
  79.     start();
  80.     ui->wszystkich_pytan->display(liczenieplikow());
  81. }
  82.  
  83. MainWindow::~MainWindow()
  84. {
  85.     delete ui;
  86. }
  87.  
  88. int MainWindow::start()
  89. {
  90.     QString nazwa_plik_pytania = "C://Users/wikto/Documents/pytania/"+QString::number(pytanie)+".txt";
  91.     QFile plik_pytania(nazwa_plik_pytania);
  92.  
  93.     if(plik_pytania.open(QIODevice::ReadOnly))
  94.     {
  95.         QTextStream str(&plik_pytania);
  96.         ui->textBrowser->setText(str.readAll());
  97.         ui->textEdit->clear();
  98.         plik_pytania.close();
  99.     }
  100.     QString nazwa_plik_odpowiedzi = "C://Users/wikto/Documents/odpowiedzi/"+QString::number(pytanie)+".txt";
  101.     QFile plik_odpowiedzi(nazwa_plik_odpowiedzi);
  102.  
  103.     if(plik_odpowiedzi.open(QIODevice::ReadOnly))
  104.     {
  105.         QTextStream odp(&plik_odpowiedzi);
  106.         prawidlowa_odpowiedz = odp.readAll();
  107.         plik_pytania.close();
  108.     }
  109.     ui->pozostalych_powtorzen->display(powtorzenia[pytanie-1]);
  110. }
  111.  
  112. int MainWindow::liczenieplikow()
  113. {
  114.     int liczbaplikow = 0;
  115.     std::filesystem::path p { "C://Users/wikto/Documents/pytania" };
  116.     for (auto& p : std::filesystem::directory_iterator(p))
  117.           liczbaplikow++;
  118.     return liczbaplikow;
  119. }
  120.  
  121. int MainWindow::losowaniepytania()
  122. {
  123.     while(true)
  124.     {
  125.         int numer = rand()%liczenieplikow()+1;
  126.         if(powtorzenia[numer-1]>0)
  127.         {
  128.             return numer;
  129.         }
  130.     }
  131. }
  132.  
  133. int MainWindow::wszystkie_powtorzenia()
  134. {
  135.     int suma_powtorzen = 0;
  136.     for(int i=0; i<powtorzenia.size(); i++)
  137.         suma_powtorzen = suma_powtorzen + powtorzenia[i];
  138.     return suma_powtorzen;
  139. }
  140.  
  141.  
  142. int MainWindow::ilosc_pozostalych_pytan()
  143. {
  144.     int pozostale_pytania = 0;
  145.     for(int i=1; i<=liczenieplikow(); i++)
  146.     {
  147.         if(powtorzenia[i-1]>0)
  148.             pozostale_pytania++;
  149.     }
  150.     return pozostale_pytania;
  151. }
  152.  
  153. void MainWindow::on_actionZako_cz_triggered()
  154. {
  155.     close();
  156. }
  157.  
  158. void MainWindow::on_pushButton_clicked()
  159. {
  160.  
  161. //    QString numer = QString::number(a);
  162. //    QString sciezka = ("C://Users/wikto/Documents/pytania/");
  163.  
  164.  
  165.     odpowiedz = ui->textEdit->toPlainText();
  166.     if(odpowiedz==prawidlowa_odpowiedz)  //jesli odpowiedz jest prawidlowa
  167.     {
  168.         powtorzenia[pytanie-1]--;
  169.         wystapienia[pytanie-1]++;
  170.     }
  171.     else
  172.         powtorzenia[pytanie-1] = powtorzenia[pytanie-1] + dodatkowe_powtorzenia;
  173.  
  174.     pytanie = losowaniepytania(); //losowanie pytania
  175.  
  176.     ui->pozostalych_powtorzen->display(powtorzenia[pytanie-1]); //wyswietlanie liczby pozostalych powtorzen
  177.     ui->pozostalych_pytan->display(ilosc_pozostalych_pytan());
  178.  
  179.     QString nazwa_plik_pytania = "C://Users/wikto/Documents/pytania/"+QString::number(pytanie)+".txt";
  180.     QFile plik_pytania(nazwa_plik_pytania);
  181.     ui->textEdit->clear();
  182.  
  183.     if(plik_pytania.open(QIODevice::ReadOnly))
  184.     {
  185.         QTextStream str(&plik_pytania);
  186.         ui->textBrowser->setText(str.readAll());
  187.  
  188.         plik_pytania.close();
  189.     }
  190.  
  191.     QString nazwa_plik_odpowiedzi = "C://Users/wikto/Documents/odpowiedzi/"+QString::number(pytanie)+".txt";
  192.     QFile plik_odpowiedzi(nazwa_plik_odpowiedzi);
  193.  
  194.     if(plik_odpowiedzi.open(QIODevice::ReadOnly))
  195.     {
  196.         QTextStream odp(&plik_odpowiedzi);
  197.         prawidlowa_odpowiedz = odp.readAll();
  198.         plik_pytania.close();
  199.     }
  200.  
  201.     ui->progressBar->setValue(wszystkie_wystapienia()*100/wszystkie_powtorzenia());
  202. }
  203.  
  204. //******************************************************************************************
  205.  
  206. #include "mainwindow.h"
  207. #include <iostream>
  208. #include <QApplication>
  209.  
  210.  
  211. int main(int argc, char *argv[])
  212. {  
  213.     QApplication a(argc, argv);
  214.     MainWindow w;
  215.     w.show();
  216.     return a.exec();
  217. }
  218.  
Add Comment
Please, Sign In to add comment