2016-11-26 83 views
-5

Noob here :)嗨。試圖自學C++!我的基本計算器有什麼問題?

下面的代碼應該問我:我想要做什麼樣的操作,通過變量:'int f;'

我知道問題是從res = a f b;,我敢肯定,一個非常糟糕的糟糕的代碼..我不知道該怎麼辦呢?

有什麼想法?

#include <iostream> 

using namespace std; 

int main() 
{ 
int a; 
int b; 
int sum; 
int f; 

cout << "wahts the first number" << endl; 
cin >> a; 
cout << " '+'? '-'? '*'? or '/'? " << endl; 
cin >> f; 
cout << "whats the second number" << endl; 
cin >> b; 
res = a f b; 
cout << "answer is: " << res << endl; 
return 0; 
} 
+3

自學是偉大的,但它會更容易[一對夫婦的好書]很多(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – user4581301

+0

我同意一些好的書會容易得多。在線資源也可以很好地工作,雖然在C++中似乎沒有那麼多。如果您剛開始編程並打開其他選項,則可能需要查看[python](https://python.org)。雖然我喜歡C++,但是有很多東西可以讓你搞砸,理解編譯和鏈接是一件很大的事情,即使不需要同時學習編程的基礎知識。 Python對初學者非常友好,並且有大量的免費資源。 – danielunderwood

+1

@ +','-','*','/'不是整數,並且'f'不是一個操作符 –

回答

0

有一些事情需要考慮。

  1. f是一個操作,如果你想有一個通用的操作應該是這樣的一個std::function而不是intint保存一種數字。
  2. 在這種情況下,您實際上不需要使用std::function,因爲您可以執行一組不同的操作(乘,加,減,除)。你不能只將它分配到f,並希望它能夠工作。您需要conditional statements來決定從輸入中執行什麼操作。您還應該處理不屬於這些選項之一的輸入。你會想把這些邏輯放到一個不同的函數中,讓所有的事情都變得更好和有組織。
  3. res = a f b不會工作,因爲您從未定義過resa f b不是有效的代碼。您已定義sum而不使用它,因此您可能的意思是res。像a f b這樣的表達式不會起作用,除非中間是特殊的東西(一個operator,實際上,只有一部分操作符會形成這樣的表達式)。
  4. 與您的錯誤沒有關係,但是您的主塊中的代碼應該縮進一點,以便於閱讀。
  5. 也與錯誤無關,但我建議針對using namespace std,因爲它可能污染您的本地命名空間並導致錯誤,特別是在更新代碼時。

當你遇到這樣的問題時,在你遇到的一些問題上做一些關鍵詞搜索。這開始有點困難,因爲你並不總是知道谷歌的條款,但從長遠來看會幫助你。首先嚐試編譯你的程序並逐個處理這些錯誤,直到成功編譯完成,然後嘗試將你得到的輸出與你在程序的每一步所期望的結果進行比較。

0

您的變量fint的類型,當進入+或任何操作,因爲你想存儲在int變量和cinchar將繼續無視命令,並可能導致系統崩潰cin將設置一個錯誤標誌。 和一個變量不能用來代替運算符,因爲它擁有'+'或任何其他運算符。並且您還沒有聲明任何變量res我認爲您的意思是sum但是最好使用像結果這樣的變量,因爲它更有意義 (試想一下代碼sum = a * b !!最好是result = a * b)。

你應該

  1. 使用的決策結構,如if elseswitch?:運營商。 檢查了這一點CPP Tutorials decision making
  2. 雖然我覺得你應該開始直接從here

    我覺得你的代碼應該是

    int main() 
    { 
        int result, a, b; 
        char f; 
        std::cout << "what is the first number \n "; 
        std::cin >> a; 
        std::cout << " '+' '-' '*' or '/'? \n"; 
        std::cin >> f; 
        std::cout << "whats the second number \n"; 
        std::cin >> b; 
        if (f == '+') 
         result = a + b; 
        else if (f == '-') 
         result = a - b; 
        else if (f == '*') 
         result = a * b; 
        else if (f == '/') 
        { 
         if(b == 0) 
         { 
          std::cout<<"Division by zero!!\n"; 
          system("pause"); 
          return 0; 
         } 
         result = a/b; 
        } 
        else 
        { 
         std::cout<<"Sorry wrong operator \n"; 
         system("pause"); 
         return 0; 
        } 
        std::cout << "answer is: " << result << '\n'; 
        return 0; 
    } 
    

PS學會正確打算如上圖所示它會幫助您發現大量代碼中的錯誤並使其更易於理解。同時也要避免使用using namespace指令,因爲它可能會污染本地作用域,並且如果您有與std中的名稱相同的本地函數a或變量,則會產生問題。並試着找一本好書開始。我也開始研究自己。