簡體   English   中英

帶有數學問題的 c++ 函數

[英]c++ functions with math problems

我開始學習 c++ 並解決了這個問題,嘗試進行以下計算:place + (place / 10)² 如果 place = 90,它應該是 171。

    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #include "TestFunction.h"

    using namespace std;

    int main() {
        TestFunction test1 ("John", 90);
        test1.getInfo();
    }

這是 TestFunction 標頭

#include <iostream>
#include <string>
#include <iomanip>

class TestFunction {

public:
    TestFunction(std::string userName, int userPlace) {
        name = userName;
        place = userPlace;
    }

    int getPlace() {
        return place;
    }

    int getResult() {
        return num1;
    }

    void getInfo() {
        std::cout << "Using getPlace():" << getPlace() << std::endl;
        std::cout << "Using getResult(): " << getResult() << std::endl;
        std::cout << "Using num1: " << num1 << std::endl;
        std::cout << "calculate here: " << getPlace() + pow(getPlace() / 10, 2) << std::endl;
    }

private:
    std::string name;
    int place;
    int num1 = place + pow(place / 10, 2);
};

並得到這個結果:

Using getPlace():90
Using getResult(): -2147483648
Using num1: -2147483648
calculate here: 171

我真的不知道在嘗試使用 getResult() 或 num1 時我錯過了什么,歡迎提供任何建議或簡單的解釋,謝謝。

您需要跟蹤計算完成的時間。
num1的初始化在place的初始化之前place ,這是不惜一切代價避免的。
您可以將該計算移動到構造函數中:

TestFunction(std::string userName, int userPlace) {
        name = userName;
        place = userPlace;
        num1 = place + pow(place / 10, 2);
    }

還有其他方法,但這對您來說可能是最容易獲得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM