2016-04-11 32 views
5

tôi đã viết mã này:Tỷ lệ phần trăm trong tính toán

std::cout << "When did you graduate? "; 
int graduation_year = 0; 
std::cin >> graduation_year; 
std::cout << "\n"; 
std::cout << "How much is your student debt? "; 
double debt = 0; 
std::cin >> debt; 

std::cout << "You graduated in " << graduation_year << " and have student debt worth " << debt << ".\n"; 

double discount = 0; 

switch (graduation_year) { 
case 2010: 
{ 
    if (debt >= 5000 && debt < 10000) 
     double discount = .99; 
    double payment = debt * discount; 
    std::cout << "Your student debt is between 5000 and 10000 which means your payment would be " << payment << "\n"; 
} 
break; 

này không phải dành cho một trường chuyển nhượng, tôi chỉ đơn giản là cố gắng tìm hiểu C++ và cố gắng để có được hang của tỷ lệ phần trăm và chuyển/trường hợp.

Khó chịu, khi tôi thay đổi phần này

double discount = .99; 
double payment = debt * discount; 

để

double payment = debt * 0.99; 

nó hoạt động hoàn hảo. Vì vậy, tôi cảm thấy giống như một cái gì đó có thể là sai vì đôi là < 1, nhưng tôi không thể cho cuộc sống của tôi tìm ra nó là gì. Mã này tiếp tục với trường hợp 2011, nhưng nó cung cấp cho các vấn đề chính xác tương tự cho một phần của mã vì vậy tôi figured tôi muốn rời khỏi đó.

Trả lời

12

Bạn đang tái tuyên bố giảm như là một biến nội bộ để các khối của sau if-tuyên bố

if (debt >= 5000 && debt < 10000) 
    double discount = .99; 

Bạn nên viết nó như thế này:

if (debt >= 5000 && debt < 10000) 
    discount = .99; 

ETA: một chút giải thích.

Các giảm khai trong nếu khối tạm thời ẩn toàn cầugiảm khai. Mặc dù giá trị được gán một cách chính xác để khai báo bên trong giảm, khi bạn nhận ra khỏi nếu khối biến này là ra khỏi phạm vi, và bất kỳ thông báo thêm cho giảm được giải quyết bằng cách sử dụng toàn cầuchiết khấu tuyên bố. Vì bạn không thay đổi biến số toàn cầu, bạn không nhận được kết quả phù hợp.

+0

Chúa Giêsu, tôi biết nó phải là một cái gì đó ngu ngốc về phía tôi. Cảm ơn rất nhiều người, anh đã cứu tôi rất nhiều thời gian. – Milan

+0

@ tobi303, tôi đã tuyên bố giảm giá gấp đôi trước đó, phía trên phần chuyển đổi :) – Milan

+0

@Milan bạn được chào đón! :-) –

Các vấn đề liên quan