<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      第一次作業

      設計一個計算器程序,實現加、減、乘、除,算數開方運算。設計流程圖:

       


       #ifndef WIDGET_H
      #define WIDGET_H
       
      #include <QWidget>
      #include<QString>
      #include<QStack>
      #include<QTime>
      #include<iterator>
      #include<QLineEdit>
       
      namespace Ui {
      class Widget;
      }
       
      class Widget : public QWidget
      {
          Q_OBJECT
       
      public:
          explicit Widget(QWidget *parent = nullptr);
          ~Widget();
          QString input="0"; //輸入框
          bool flat=false;
      private slots:
          void on_pushButton_2_clicked();
       
          void on_pushButton_clicked();
       
          void on_pushButton_3_clicked();
       
          void on_pushButton_you_clicked();
       
          void on_pushButton_ce_clicked();
       
          void on_pushButton_4_clicked();
       
          void on_pushButton_5_clicked();
       
          void on_pushButton_6_clicked();
       
          void on_pushButton_jia_clicked();
       
          void on_pushButton_clear_clicked();
       
          void on_pushButton_7_clicked();
       
          void on_pushButton_8_clicked();
       
          void on_pushButton_9_clicked();
       
          void on_pushButton_jian_clicked();
       
          void on_pushButton_chu_clicked();
       
          void on_pushButton_0_clicked();
       
          void on_pushButton_deng_clicked();
       
          void on_pushButton_cheng_clicked();
       
          void on_pushButton_zuo_clicked();
       
          void on_pushButton_point_clicked();
       
          void on_pushButton_10_clicked();
       
      private:
          Ui::Widget *ui;
      };
       
      #endif // WIDGET_H
      #include "widget.h"
      #include "ui_widget.h"
       
      #include<iostream>
      using namespace std;
      #include<stack>
      #include<vector>
      #include<cstdlib>
      #include<limits.h>
      #include<QDebug>
       
      bool isNum(char ch);
      bool isOperate(char ch);
      int level(char ch);
      double scd(string s);
      double getValue(vector<string> V);
      vector<string> midToPost(string s);
       
      Widget::Widget(QWidget *parent) :
          QWidget(parent),
          ui(new Ui::Widget)
      {
          ui->setupUi(this);
      }
       
      Widget::~Widget()
      {
          delete ui;
      }
       
      void Widget::on_pushButton_2_clicked()
      {
       
          if(input=="0")
          input='2';
          else input=input+'2';
          //inputLine->setText(input);
          ui->lineEdit->setText(input);
       
      }
       
      void Widget::on_pushButton_clicked()
      {
          if(input=="0")
          input='1';
          else input=input+'1';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_3_clicked()
      {
          if(input=="0")
          input='3';
         else
          {
              input=input+'3';
          }
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_you_clicked()
      {
          if(input=="0")
          input=')';
          else input=input+')';
         // inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_ce_clicked()
      {
          input = input.left(input.length()-1); //減去一字符
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_4_clicked()
      {
          if(input=="0")
          input='4';
          else input=input+'4';
         // inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_5_clicked()
      {
          if(input=="0")
          input='5';
          else input=input+'5';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_6_clicked()
      {
          if(input=="0")
          input='6';
          else input=input+'6';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }設計一個計算器程序,實現加、減、乘、除,算數開方運算。設計流程圖:

       #ifndef WIDGET_H
      #define WIDGET_H
       
      #include <QWidget>
      #include<QString>
      #include<QStack>
      #include<QTime>
      #include<iterator>
      #include<QLineEdit>
       
      namespace Ui {
      class Widget;
      }
       
      class Widget : public QWidget
      {
          Q_OBJECT
       
      public:
          explicit Widget(QWidget *parent = nullptr);
          ~Widget();
          QString input="0"; //輸入框
          bool flat=false;
      private slots:
          void on_pushButton_2_clicked();
       
          void on_pushButton_clicked();
       
          void on_pushButton_3_clicked();
       
          void on_pushButton_you_clicked();
       
          void on_pushButton_ce_clicked();
       
          void on_pushButton_4_clicked();
       
          void on_pushButton_5_clicked();
       
          void on_pushButton_6_clicked();
       
          void on_pushButton_jia_clicked();
       
          void on_pushButton_clear_clicked();
       
          void on_pushButton_7_clicked();
       
          void on_pushButton_8_clicked();
       
          void on_pushButton_9_clicked();
       
          void on_pushButton_jian_clicked();
       
          void on_pushButton_chu_clicked();
       
          void on_pushButton_0_clicked();
       
          void on_pushButton_deng_clicked();
       
          void on_pushButton_cheng_clicked();
       
          void on_pushButton_zuo_clicked();
       
          void on_pushButton_point_clicked();
       
          void on_pushButton_10_clicked();
       
      private:
          Ui::Widget *ui;
      };
       
      #endif // WIDGET_H
      #include "widget.h"
      #include "ui_widget.h"
       
      #include<iostream>
      using namespace std;
      #include<stack>
      #include<vector>
      #include<cstdlib>
      #include<limits.h>
      #include<QDebug>
       
      bool isNum(char ch);
      bool isOperate(char ch);
      int level(char ch);
      double scd(string s);
      double getValue(vector<string> V);
      vector<string> midToPost(string s);
       
      Widget::Widget(QWidget *parent) :
          QWidget(parent),
          ui(new Ui::Widget)
      {
          ui->setupUi(this);
      }
       
      Widget::~Widget()
      {
          delete ui;
      }
       
      void Widget::on_pushButton_2_clicked()
      {
       
          if(input=="0")
          input='2';
          else input=input+'2';
          //inputLine->setText(input);
          ui->lineEdit->setText(input);
       
      }
       
      void Widget::on_pushButton_clicked()
      {
          if(input=="0")
          input='1';
          else input=input+'1';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_3_clicked()
      {
          if(input=="0")
          input='3';
         else
          {
              input=input+'3';
          }
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_you_clicked()
      {
          if(input=="0")
          input=')';
          else input=input+')';
         // inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_ce_clicked()
      {
          input = input.left(input.length()-1); //減去一字符
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_4_clicked()
      {
          if(input=="0")
          input='4';
          else input=input+'4';
         // inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_5_clicked()
      {
          if(input=="0")
          input='5';
          else input=input+'5';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_6_clicked()
      {
          if(input=="0")
          input='6';
          else input=input+'6';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }

       void Widget::on_pushButton_clear_clicked()
      {
          input='0';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_7_clicked()
      {
          if(input=="0")
          input='7';
          else input=input+'7';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_8_clicked()
      {
          if(input=="0")
          input='8';
          else input=input+'8';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_9_clicked()
      {
          if(input=="0")
          input='9';
          else input=input+'9';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_jian_clicked()
      {
          if(input=="0")
          input='-';
          else input=input+'-';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_chu_clicked()
      {
          if(input=="0")
          input='/';
          else input=input+'/';
         // inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_0_clicked()
      {
          if(input=="0")
          input='0';
          else input=input+'0';
         // inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_cheng_clicked()
      {
          if(input=="0")
          input='*';
          else input=input+'*';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_zuo_clicked()
      {
          if(input=="0")
          input='(';
          else input=input+'(';
         // inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_point_clicked()
      {
          if(input=="0")
          input='.';
          else input=input+'.';
          //inputLine->setText(input);
           ui->lineEdit->setText(input);
      }
       
      void Widget::on_pushButton_deng_clicked()
      {
       
          string inputTemp = input.toStdString();
          vector<string> expression = midToPost(inputTemp);
          double value = getValue(expression);
          if(value != INT_MAX) {
            input=input+"="+QString::number(value);
           // inputLine->setText(input);
             ui->lineEdit->setText(input);
          }else{
            input=' ';
            input=input+"錯誤,請重新輸入";
            //inputLine->setText(input);
             ui->lineEdit->setText(input);
          }
      }
      bool isNum(char ch) {
          if(ch >= '0' && ch <= '9') return true;
          else return false;
      }
       
      bool isOperate(char ch) {
          if(ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '(' || ch == ')')
          return true;
          else return false;
      }
       
      int level(char ch) {
          switch(ch) {
              case '(' :
                  return 5;
              case '*' :
                  return 4;
              case '/' :
                  return 4;
              case '+' :
                  return 3;
              case '-' :
                  return 3;
              case ')':
                  return 2;
          }
      }

      /*字符串轉數字*/
      double scd(string s) {
          if(s.length() == 0) return INT_MAX;
       
          bool flag = false;
          for(int i = 0; i < s.length(); i++) {
              if(i == 0 && s[i] == '-') continue;
              else if(s[i] == '.' && !flag) {
                  if(i > 0 && isNum(s[i-1])) {
                      flag = true;
                      continue;
                  }
                  else return INT_MAX;
              }
              else if(isNum(s[i])) continue;
              else return INT_MAX;
          }
       
          double result = atof(s.c_str());
          return result;
      }
       
       /*由中綴表達式得到后綴表達式, 向量V存儲結果*/
      vector<string> midToPost(string s) {
          stack<char> S; /*符號棧*/
          vector<string> V; /*后綴表達式*/
          int i = 0;
          while(i < s.length()) {
              if(isNum(s[i])) {
                  string str = "";
                  while(isNum(s[i]) || s[i] == '.') {
                      str += s[i];
                      i++;
                  }
                  V.push_back(str);
              }
       
              else if(isOperate(s[i])){
                  /*負數情況*/
                  if(s[i] == '-' && (i == 0 || !isNum(s[i-1]))) {
                      string str = "-"; i++;
                      while(isNum(s[i]) || s[i] == '.') {
                          str += s[i]; i++;
                      }
                      V.push_back(str);
                  }else{
                      if(S.empty()){
                          S.push(s[i]); i++;
                      }else {
                          int initial = level(s[i]);
                          if(initial == 2) {
                              while(level(S.top()) != 5 && !s.empty()) {
                                  string str = "";
                                  str += S.top();
                                  V.push_back(str);
                                  S.pop();
                              }
                              if(S.top() == '(') S.pop(); i++;
                          } else {
                              while(!S.empty() && initial <= level(S.top()) && level(S.top()) != 5) {
                                  string str = "";
                                  str += S.top();
                                  V.push_back(str);
                                  S.pop();
                              }
                              S.push(s[i]); i++;
                          }
                      }
                  }
              }
              else{
                  cout << "表達式出錯" << endl;
                  V.clear();
                  return V;
              }
          }
          while(!S.empty()) {
              string str = ""; str += S.top();
              S.pop();
              V.push_back(str);
          }
          //for(int i = 0; i < V.size(); i++) cout << V[i] << "[]";
          return V;
      }
       
      /*后綴表達式得到最終結果*/
      double getValue(vector<string> V) {
          stack<double> S;
          for(int i = 0; i < V.size(); i++) {
          /*操作運算符*/
              if(V[i].length() == 1 && isOperate(V[i][0])) {
                  double a = 0, b = 0;
                  if(!S.empty()) {
                      a = S.top(); S.pop();
                  }else return INT_MAX;
       
                  if(!S.empty()) {
                      b = S.top(); S.pop();
                  }else return INT_MAX;
       
                  switch(V[i][0]) {
                      case '+':
                          S.push(b+a);
                          break;
                      case '-':
                          S.push(b-a);
                          break;
                      case '*':
                          S.push(b*a);
                          break;
                      case '/':
                          S.push(b/a);
                          break;
                      default:
                          return INT_MAX;
                  }
              }else {
                  if(scd(V[i]) == INT_MAX) return INT_MAX;
                  else S.push(scd(V[i]));
              }
          }
          if(S.empty()) return INT_MAX;
       
          double value = S.top();
          S.pop();
          return value;
      }


      牛頓迭代算法實現開平方 

      double mysqrt(double x)

      {
      if (x == 1 || x == 0)
      return x;
      double temp = x / 2;
      while (1)
      {
      double a = temp;
      temp = (temp + x / 2) / 2;
      if (a - temp < 0.001&&a>temp)
      return temp;
      }
      }

      void Widget::on_pushButton_10_clicked()
      {
       
           this->close();//退出計算器
      }
      測試用例:

      乘法測試如下

      注:99*99=9801加法測試如下

      注:1+2=3。

      posted @ 2023-10-13 22:38  煢煢白兔。  閱讀(23)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 波多野结衣在线精品视频| 五月天天天综合精品无码| 亚洲人成网站18禁止无码| 嘉禾县| 人人做人人妻人人精| 欧美大胆老熟妇乱子伦视频| 国产精品久久无中文字幕| 亚洲少妇人妻无码视频| 久久精品午夜视频| 婷婷综合亚洲| 免费大片黄国产在线观看| 乐安县| 国产午夜精品理论大片| 精品国产av最大网站| 国产精品国三级国产av| 自拍偷拍一区二区三区四| 亚洲人成电影在线天堂色| 日本无遮挡吸乳视频| 日韩国产精品一区二区av| 国产对白老熟女正在播放| 国产精品看高国产精品不卡| 视频一区视频二区在线视频| 国产激情精品一区二区三区| 欧美一区二区三区欧美日韩亚洲 | 偷拍专区一区二区三区| 亚洲精品香蕉一区二区| 国产午夜影视大全免费观看| 狠狠色丁香婷婷综合| 国产精品亚洲一区二区z| 日本不卡不二三区在线看| 少妇高潮惨叫喷水在线观看| 岛国av无码免费无禁网站| 久久精品久久电影免费理论片| 国产精品成人无码久久久| 亚洲日本一区二区三区在线播放| 亚洲人成网网址在线看| 金川县| 亚洲大尺度无码无码专线| 精品亚洲欧美中文字幕在线看| 男女性高爱潮免费网站| 亚洲国产精品毛片av不卡在线|