encryptwindow.cpp
#include "encryptwindow.h" #include "ui_encryptwindow.h" EncryptWindow::EncryptWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::EncryptWindow) { ui->setupUi(this); } EncryptWindow::~EncryptWindow() { delete ui; }
exercise2601.h
#include <string> using namespace std; // 宣告 GuessGame 類別 class GuessGame { public: // 宣告建構函數 GuessGame(int); // 存取函數與修改函數 void set_game(); string get_answer(); int get_times(); int get_a(); int get_b(); // 工具函數 bool FindNumber(string, int, char); void ABCounter(string, string); // 命令列遊戲版本 void Run(); private: // 資料成員區 string answer; int length; string guess; int a; int b; int times; }; /* 檔名: exercise2601.h 作者: Kaiching Chang 時間: 2014-5 */
exercise2601.cpp
#include <ctime> #include <cstdlib> #include <algorithm> #include <iostream> #include "exercise2601.h" int myrandom(int i) { return rand() % i; } GuessGame::GuessGame(int digit) { if (digit < 3 || digit > 6) { length = 4; } else { length = digit; } set_game(); } void GuessGame::set_game() { srand(time(0)); string result = "0123456789"; while (true) { random_shuffle(result.begin(), result.end(), myrandom); if (result.at(0) != '0') { break; } } answer = result.substr(0, length); times = 0; a = 0; b = 0; } string GuessGame::get_answer() { return answer; } int GuessGame::get_times() { return times; } int GuessGame::get_a() { return a; } int GuessGame::get_b() { return b; } bool GuessGame::FindNumber(string array, int index, char number) { for (int i = 0; i < length; i++) { if (i == index) { continue; } if (array[i] == number) { return true; } } return false; } void GuessGame::ABCounter(string array1, string array2) { for (int i = 0; i < length; i++) { for (int j = 0; j < length; j++) { if (array1[i] == array2[j]) { if (i == j) { a++; } else { b++; } } } } } void GuessGame::Run() { while (true) { // 計算次數 times++; // 接受猜測 cin >> guess; // 檢查使用者是否輸入四個不同數字 bool state = false; for (int i = 0; i < 4; i++) { if (FindNumber(guess, i, guess[i])) { state = true; } } if (state) { cout << "Please guess 4 different numbers!!" << endl; continue; } // 檢查使用者是否輸入過少或過多的數字 if (guess.length() != 4) { cout << "Please input 4 numbers!!" << endl; continue; } // 計算 A 、 B 值 ABCounter(answer, guess); // 判斷使用者是否猜對 if (answer == guess) { cout << "Right!! You guess " << times << " times!!" << endl; break; } else { cout << "Wrong!! " << a << "A" << b << "B!!" << endl; a = 0; b = 0; } } } /* 檔名: exercise2601.cpp 作者: Kaiching Chang 時間: 2014-5 */
exercise2602.cpp
#include "exercise2601.h" int main() { GuessGame g(4); g.Run(); return 0; } /* 檔名: exercise2602.cpp 作者: Kaiching Chang 時間: 2014-5 */
the end
沒有留言:
張貼留言