using System; using System.Collections.Generic; using System.Text; namespace zagadki_3._0 { internal class MathPuzzle { public MathPuzzle() { this.range = 10; } // stała zakres public int range; // liczby do kalkulacji private int a; private int b; // operator // ustawiamy defaultową wartość na dodawanie private string op = "+"; // wynik private int result; // metoda ustawiająca operator public void setOperator(string op) { this.op = op; } // metoda generująca losową liczbę w zakresie od jeden do zakres private int generateNumber(int range) { Random rnd = new Random(); int rand = (rnd.Next() % range) + 1; return rand; } // metoda generująca operator jako string private string generateOperator() { Random rnd = new Random(); // zakres ustawiamy na 5: /,*,-,+,% int rangeOfOperator = 5; // losujemy liczby od 1 do 5 int op = (rnd.Next() % rangeOfOperator) + 1; // zamieniamy operator int na string string opString = translateOp(op); return opString; } // metoda zamieniająca operator int na string private string translateOp(int op) { string opString = ""; switch (op) { case 1: opString = "+"; break; case 2: opString = "-"; break; case 3: opString = "*"; break; case 4: opString = "/"; break; case 5: opString = "%"; break; default: opString = "+"; break; } return opString; } // metoda generująca równanie do odgadniecia public string generateCalculation() { // losowanie liczb a = generateNumber(range); b = generateNumber(range); // 1 sposob - losowanie operatora //op = generateOperator(); // 2 sposób - użytkownik wybiera operator z listy // jeśli wylosowano dzielenie, to a/b nie powinno dawać reszty oraz b != 0 if (op == "/") { checkAndFixDevision(); } string calculation = a.ToString() + " " + op + " " + b.ToString() + " = ?"; return calculation; } // metoda sprawdzająca czy jest dzielenie całkowite i b różne od zera private void checkAndFixDevision() { // jesli mamy resztę z dzielenia if (a % b != 0) { // generuj liczby tak dlugo aż będzie dzielenie bez reszty while (a % b != 0) { //a = generateNumber(range); b = generateNumber(range); } } } // metoda sprawdzajaca odpowiedz użytkownika public bool checkResult(string odpowiedz) { // liczymy wynik w zależnosci od operatora switch (op) { case "+": result = a + b; break; case "-": result = a - b; break; case "*": result = a * b; break; case "/": result = a / b; break; case "%": result = a % b; break; default: result = a + b; break; } if (result.ToString() == odpowiedz) { return true; } else { return false; } } } }