2016-02-18 31 views
2
#include <iostream> 

using namespace std; 

int main() 
{ 

    double propValue, //Property Value 
      name,   //Full Name 
      assessment, //Assessment 
      srAssessment, //Sr Assessment 
      taxRate,  //Tax rate 
      annualPropTax; //Annual Property tax 

    const double EXEMPT = 5000,  //shows the total after exemption 
       QUARTER = 4,  //represents the amount of quarters in year 
       TAXPERHUNDRED = 0.01, //represents tax rate for every $100 
       SIXTYPERCENT = 0.6; //Represents the tax based on 60% of original value 


    //Gets name from user 
    cout << "Please enter your full name: "; 
    cin >> name; 

    //gets property value from user 
    cout << "Enter the actual value of the property: "; 
    cin >> propValue; 

    //Gets tax rate 
    cout << "Enter the tax rate for each $100 of assessed value: "; 
    cin >> taxRate;  
} 

我假設有一些我在這裏做錯了,但我無法弄清楚。我是新來的C++和整體編程。當我運行這段代碼它沒有讓我輸入任何東西的「名」之後的變量,它只是顯示我所有的輸出此代碼在第一次用戶輸入後不起作用

+3

您是否正在爲'name'輸入字符?如果這樣'name'不應該是'double'。 – NathanOliver

+3

夥計們,你爲什麼低估這個?這可能是他加入ACM後的第一個用戶名。調試是通過經驗獲得的技能。不要嚇唬他,不要通過降低投票尋求幫助。 @acm818,嘗試將名稱更改爲字符串。一個double只包含一個十進制值,如-12.454,​​而一個字符串包含像「Reiss Bachman」這樣的字符。 – joshualan

+0

是的,我是。感謝幫助的人。你指出我正確的方向,我現在正在工作 – acm818

回答

3

首先,一個名字應該是一個字符串或字符數組的方式,以及你定義爲C-風格:

using namespace std; 
maxNumOfCharacters = 10 
char name[maxNumofCharacters]; 

然後一個字符如何輸入如下:

#include <iostream> 
cin.getline(name, maxNumofCharacters); 
cout << "Name:" << name << "\n"; 

您也可以定義名稱作爲字符串,可以包括字符串庫:

#include <string> 
string name; 

如果您使用字符串庫,您提取的方式是使用stringstream()命令。

cout << "Enter Name:"; 
getline(cin, name); 

希望這會有所幫助。

編輯:我發現本教程並添加此鏈接,所以你可以去參考如何定義多個輸入。還要檢查C++中的一般變量類型。如果輸入不能被轉換爲變量的類型從std::cin

http://www.cplusplus.com/doc/tutorial/basic_io/

0

你應該閱讀在C字符串的方式++是使用cin.getline

char name[32]; 
std::cout << "Enter the name\n"; 
std::cin.getline(name, 32); 

而且, name應該是char[]而不是double

+0

嗯,實際上它應該是一個'std :: string'。不要在C++中使用'char []'。 – DevSolar

+0

@DevSolar'getline'接受一個char數組,而不是'std :: string'。另外,一旦你習慣了'char []'''''''''''''''' – stackptr

+0

我們不應該試圖使用C++功能來讓他的生活更容易,而不是C的東西嗎?當然,你可以將一個char []傳遞給一個字符串構造函數,但只是簡單地執行字符串就可能更容易。 – joshualan

2

輸入將失敗。

在您的代碼中,您要求輸入名稱,但變量name的類型爲double - 如果輸入「acm818」,'a'開頭處將無法匹配。沒有儲存在name(因此未初始化),輸入未消耗,程序繼續。

(你可以檢查通過if (cin)這個條件 - 如果輸入操作失敗,將失敗。)

然後你問一個值,再次讀入double變量(propValue)。 仍然有"acm818"在輸入隊列中等待,因此程序不會暫停以詢問新的輸入,但會再次嘗試將該字符串解析爲double,並且再次匹配失敗。

taxRate相同。

即使您已將name聲明爲正確的類型,cin >> name也只會讀取第一個空格...

因此,讀取輸入的整條生產線,並將其存儲在字符串name在:

std::cout << "Please enter your name:\n"; 

std::string name; 
std::getline(cin, name); 

至於從輸入讀取數字,我建議在C++ as I suggest in C相同的方法:閱讀完整的線,和然後解析它在內存中。錯誤條件是很容易處理這樣:

std::cout << "Please enter a number:\n"; 

std::string input; 
std::getline(cin, input); 

double number = 0.0; 
try { 
    number = std::stod(input); 
} 
catch (std::invalid_argument const & ex) { 
    // input was not a number, do something about it 
} 

上面的代碼需要包括<string><stdexcept>

+0

你得到我的投票,實際解釋爲什麼OP有他們有問題。 – NathanOliver

相關問題