Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string>
- #include <iostream>
- #include <sstream>
- #include <fstream>
- #include "calculator.h"
- #include "generator.h"
- using namespace std;
- string EOL = "\n";
- int main() {
- srand ( time(NULL) );
- bool doloop = true;
- while(doloop) {
- cout << "Zvoľte režim: " << EOL;
- cout << "1 - kalkulačka " << EOL;
- cout << "2 - generátor príkladov " << EOL;
- cout << "q - ukončiť program " << EOL;
- Calculator calc = Calculator();
- Generator gen = Generator();
- /*double result = calc.evaldigitexpr("10+213+30+4", 0); // TEST DEBUG EXPR.
- cout << "\n\n RESULT: " << result << "\n\n";
- break;*/
- string mode;
- cin >> mode;
- if(mode == "1") {
- while(true) {
- cout << "Zadaj vyraz:\n";
- string expr = "";
- cin >> expr;
- if(expr == "q") break;
- cout << "= " << calc.eval(expr) << "\n";
- }
- } else if(mode == "2") {
- int level = 0;
- int problemsperlevel = 2;
- int problemsleft = problemsperlevel;
- bool interrupted = false;
- std::string savefilename = "save.txt";
- std::ifstream savefile(savefilename);
- if(savefile) {
- std::string str((std::istreambuf_iterator<char>(savefile)), std::istreambuf_iterator<char>());
- level = std::stoi(str.substr(0, str.find("|")));
- int problemsleftfile = std::stoi(str.substr(str.find("|")+1, std::string::npos));
- problemsleft = problemsleftfile > 0 ? problemsleftfile : problemsleft;
- cout << "File exists! Returning to level " << level << ".\n";
- }
- double nums[] = { 1.0, 2.5 };
- char* ops = "+" ;
- int min = 0;
- int max = 20;
- int difficultmin = 0;
- int difficultmax = 5;
- int exprlen = 1;
- bool negativenumbers = false;
- //string prob = gen.formatproblem(nums, ops, 2);
- cout << "TEST PROBLEM: " << gen.generateproblem(0, 100, 0, 5, ops, 1, 0, false) << "\n";
- while(true) {
- // (min, max, difficultmin, difficultmax, char ops[], oplen, exprlen, divisibleby, bool negativenumbers)
- //string prob = gen.generateproblem(min, max, difficultmin, difficultmax, ops, sizeof(ops), 3, 0, negativenumbers);
- string prob = gen.generateproblem(min, max, difficultmin, difficultmax, ops, exprlen, 0, negativenumbers); //ops = "*";
- switch(level) {
- case 0: ops = "+"; prob = gen.generateproblem(0, 20, 0, 5, ops, 1, 0, false); break;
- case 1: prob = gen.generateproblem(0, 50, 0, 5, ops, 1, 0, false); break;
- case 2: ops = "+-*"; prob = gen.generateproblem(0, 100, 0, 5, ops, 1, 0, false); break;
- case 3: ops = "+-"; prob = gen.generateproblem(0, 100, 0, 10, ops, 1, 0, false); break;
- case 4: ops = "+-*"; prob = gen.generateproblem(0, 300, 0, 30, ops, 1, 0, false); break;
- case 5: ops = "/"; prob = gen.generateproblem(0, 100, 0, 5, ops, 1, 1, false); break;
- default:
- break;
- }
- cout << level << ": " << (problemsperlevel-problemsleft+1) << "/" << problemsperlevel << " -> "<< prob << " -> ";
- string userres = "";
- cin >> userres;
- const char * userreschararr = userres.c_str();
- if(userreschararr[0] == 'P' || userreschararr[0] == 'p' || userreschararr[0] == 'q' || userreschararr[0] == 'Q') {
- cout << "Saving level!\n";
- std::ofstream outfile(savefilename, std::ofstream::out | std::ofstream::trunc);
- outfile << level << "|" << problemsleft;
- outfile.close();
- interrupted = true;
- break;
- }
- if(userreschararr[0] == 'r' || userreschararr[0] == 'R') {
- cout << "Restarting game!\n";
- std::ofstream outfile(savefilename, std::ofstream::out | std::ofstream::trunc);
- outfile << "0|" << problemsleft;
- outfile.close();
- level = 0;
- problemsleft = problemsperlevel;
- continue;
- }
- double userresparsed = 0;
- userresparsed = std::atof(userreschararr);
- if(userresparsed == calc.evaldigitexpr(prob)) {
- problemsleft--;
- if(problemsleft <= 0) {
- level++;
- problemsleft = problemsperlevel;
- }
- } else {
- problemsleft++;
- cout << "Wrong answer! Douche, learn maths!\n";
- cout << "Input: " << userresparsed << " --- Answer: " << calc.evaldigitexpr(prob) << "\n\n";
- }
- }
- if(!interrupted) {
- std::ofstream outfile(savefilename, std::ofstream::out | std::ofstream::trunc);
- outfile << "0|0";
- outfile.close();
- }
- } else if(mode == "q") {
- break;
- } else {
- cout << "Nesprávna voľba! " << EOL;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment