While loop is continuous.

Im trying to write a homeloan function that calcs certain values(deposit, interest etc) and displays an error message if the deposit is less that %20 of the house price.
Only problem is, the function loops continuosly. Any idea how to fix this?? My SCRIPT is below. cheers
function [monthlyPayment, interest] = homeloan(price, deposit, intRate, lengthOfLoan)
% for deposit while using a while loop
deposit <= ((300000)/ 5);
while deposit < 300000
disp('error');
deposit= ((300000)/ 5); % do not forget to do this, otherwise we would loop forever
%monthly payment
monthlyPayment = (((price - deposit)*intRate)*((1 + intRate)^lengthOfLoan))/(((1 + intRate)^lengthOfLoan) - 1)
% interest
interest = (monthlyPayment * lengthOfLoan) - ( price - deposit)
end

1 commentaire

Azzi Abdelmalek
Azzi Abdelmalek le 28 Août 2012
Modifié(e) : Azzi Abdelmalek le 28 Août 2012
deposit= ((300000)/ 5); % if you do this, you will loop forever
can you post the full code

Connectez-vous pour commenter.

Réponses (3)

Walter Roberson
Walter Roberson le 28 Août 2012

0 votes

deposit <= ((300000)/ 5);
is a logical test, followed by throwing away the result. It is not an assignment.
Arthur
Arthur le 28 Août 2012

0 votes

You're not changing the value of deposit in the loop, but always setting it at 300000/5. So deposit is always smaller than 300000, and the loop will run forever.
Image Analyst
Image Analyst le 28 Août 2012

0 votes

Try this. Just check to see if the deposit is big enough and warn user if it's not:
function [monthlyPayment, interest] = homeloan(price, deposit, intRate, lengthOfLoan)
monthlyPayment = [];
interest = [];
minDeposit = price * 0.2;
if deposit < minDeposit
warningMessage = sprintf('Error: your deposit of %.2f is less than the required deposit of %.2f, which is 20%%of %.2f',...
deposit, minDeposit, price);
uiwait(warndlg(warningMessage));
else
% Calculate monthly payment
monthlyPayment = (((price - deposit)*intRate)*((1 + intRate)^lengthOfLoan))/(((1 + intRate)^lengthOfLoan) - 1)
% Calculate interest
interest = (monthlyPayment * lengthOfLoan) - ( price - deposit)
end

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Question posée :

le 28 Août 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by