2013-11-26 84 views
-1

我是一名C++編程的學生我正嘗試在C++中創建一個年齡計算器,但我被困於將變量乘以另一個變量 代碼如下:我的C++代碼不工作

#include <iostream.h> 
#include <conio.h> 
void main() 
{ 
    clrscr(); 
    int birthmonth,birthyear,birthdate; 
    int currentmonth,currentyear,currentdate; 
    int year,month,weeks,cal,calx,days,hours; 
    cout<<"Hassan's Age Calculator\n\n"; 
    cout<<"Enter Your Birth Year(i.e:1996):"; 
     cin>>birthyear; 
    cout<<"\nEnter Your Birth Month(i.e:10):"; 
     cin>>birthmonth; 
    cout<<"\nEnter date of Birth(i.e:27):"; 
     cin>>birthdate; 
    cout<<"\nEnter The Current Month(i.e:7):"; 
     cin>>currentmonth; 
    cout<<"\nEnter The Current Year(i.e:2013):"; 
     cin>>currentyear; 
    cout<<"\nEnter Current Date(i.e:24):"; 
     cin>>currentdate; 
    year=currentyear-birthyear; 
    month=year*12; 
    weeks=month*4.34; 
    cal=(year*365.242)+currentdate; 
    calx=cal+30.43; 
    days=calx-birthdate; 
    hours=days*24; 

    cout<<"\n\n\t\tYour Age is "<<year<< " in Years" ; 
    cout<<"\n\n\t\tYour Age is "<<month<< " in Months" ; 
    cout<<"\n\n\t\tYour Age is "<<weeks<<" in weeks";   
    cout<<"\n\n\t\tYour Age is "<<days<<" in days"; 
    cout<<"\n\n\t\tYour Age is "<<hours<<" in hours"; 
    getch(); 
} 

看到變量名稱小時它不工作它顯示18640但它應該是149712乘以變量(天)的答案爲24,並在控制檯屏幕上的天數答案是6238我使用的是Turbo C 4.0 ++和我需要幫助什麼即時通訊做錯了。

+11

「我做錯了什麼」 - 一方面,您使用的是一個數十年的編譯器,它接受無效的代碼,如void main()。 –

+2

[哇,1993年11月](http://en.wikipedia.org/wiki/Turbo_C++#Historical_versions)。 *字面* 2十歲!你甚至是如何運作的? – BoBTFish

+5

如果他是告訴你使用Turbo C++的人,那麼放棄該類並向教授提出投訴。另外,你在整數上使用浮點運算。你應該使用'float'或'double'來代替'int'。 – ApplePie

回答

13

它看起來像你的史前編譯器有16位int類型。 149712太大而不適合16位,所以計算溢出並給出錯誤的值。你應該:

  • 使用longint32_t如果你需要有保證足夠大的代表人數達到幾個十億類型;或者可能是floatdouble,因爲你在做浮點運算;
  • 使用現代編譯器。在編譯器的整個生命週期中,語言和標準庫有兩個主要更新,而你正在編寫的語言幾乎不可識別爲C++。
+0

請注意OP正在使用浮點運算。 long和int32_t會失去精度(假設他的公式是正確的)。 – ApplePie

+0

並對OP:請注意,有很多*免費*編譯器是非常新的和良好的質量。 Microsoft Visual Studio 2012 Express完全免費,用於教育目的,它還包括一個完整的IDE。 – ApplePie

+0

@ AlexandreP.Levasseur Mike的回答聽起來更加健全。使用自動轉換結果的FP算術可能是OP代碼中的一個額外缺陷。 –