簡體   English   中英

為什么我的程序輸出一個巨大的小數?

[英]Why does my program output a huge decimal?

好的,所以我創建了一個模擬景觀公司的程序,因此我們必須計算Sod和圍欄的成本。 因此,當我同時輸入長度和寬度時,他們會輸出大小數字

          Parkton Landscaping
Enter Length:  10
Enter width:   12


         Lanscaping Costs
Sod    =  6871947680.00
Fence  =  19327352760.00
Press any key to continue . . .

假設Sod = 56.40,並且假設Fence = 990.00

請幫助這里是我的代碼和兩個文件

#include <iostream>
#include <iomanip>

using namespace std;

#include "c:\Users\barta\OneDrive\Documents\Visual Studio 2015\Projects\Project 6\Project 6\Geometry.h"
#include "Pricing.h"

int main()
{
    int length, width;
    Pricing landscape;
    Geometry geo;
    const double Fenceprice = 22.50;
    const double Sodprice = .47;
    cout << "\t  Parkton Landscaping  " << endl;
    cout << "Enter Length:  ";
    cin >> length;
    cout << "Enter width:   ";
    cin >> width;
    //Pricing(length, width);
    //geo.getLength();
    //geo.getWidth();
    std::cout << std::fixed << std::setprecision(2);
    landscape.displayOutput();
    cout << "Sod    =  " << landscape.getsodCost(length) << endl;
    cout << "Fence  =  " << landscape.getFenceCost(Fenceprice) << endl;



    system("pause");
    return 0;
}

這是頭文件:

#pragma once
class Geometry
{//an object is how you access the class 
public:// where the public function definitions are created 
    Geometry();// Default Constructor
    Geometry(int, int);
    Geometry(int);
    void setLength(int); //assigns length
    void setWidth(int); //assigns width
    void setSide(int); //assigns side
    //Constructor function that recieves the values for the rectangle  
     //Constructor function that recieves values for the cube 
    int getLength(),
        getWidth(),
        getSide(),
        getArea(),
        getPerimeter(), 
        getSurfaceArea();

private: //where the private members are created 
    int length, 
        width, 
        side;
    void checkNum(int); //function that checks to see if the number is less than 0

};
Geometry::Geometry()
{
    length = length;
    width = width;
    side = 0;
}
Geometry:: Geometry(int length, int width) /*function recieves 2 intergers and calls checkNum to validate if */
{
    setLength(length);
    setWidth(width);
    checkNum(length);
    checkNum(width);
}
Geometry:: Geometry(int sides)
{
    checkNum(sides);
    setSide(sides);

}
int Geometry::getLength()
{
    return length;
}
int Geometry::getWidth()
{
    return width;
}
int Geometry::getSide()
{
    return side;
}
int Geometry::getArea()
{
    return length * width;
}
int Geometry::getPerimeter()
{
    return 2 * (length + width);
}
int Geometry::getSurfaceArea()
{

    return 6 * (side * side);
}
void Geometry::setLength(int len)
{
    length = len;
    checkNum(len);
}
void Geometry::setWidth(int widths)
{
    width = widths;
    checkNum(widths);
}
void Geometry::setSide(int s)
{
    side = s;
    checkNum(s);
}

void Geometry::checkNum(int num) //function checks to see if the number is less than zero
{

    if (num <= 0)
    {
        cout << "!!!!!!!!WARNING!!!!!! this isnt a number" << "  program will now exit......" << endl;
        system("pause");
        exit(1);
    } 

}

頭文件#2

#include "Geometry.h"

class Pricing : Geometry
{
public:
    Pricing();
    Pricing(int length, int width);
    double getsodCost(double);
    double getFenceCost(double);
    void displayOutput();
private:

};
Pricing::Pricing(int length, int width) :Geometry(length, width)
{

}
Pricing::Pricing()
{

}
double Pricing::getsodCost(double price)
{
    getArea();
    return getArea()*price;
}
double Pricing::getFenceCost(double price)
{
    getPerimeter();
    return getPerimeter()*price;
}
void Pricing::displayOutput()
{
    cout << "\n\n";
    cout << "\t Lanscaping Costs " << endl; 


}

因為您永遠不會使用有效值初始化對象,這意味着Geometry::widthGeogrpapy::length未初始化且具有不確定的值。 使用它們未初始化會導致未定義的行為

暫無
暫無

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

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