Fortran How to Prompt User for Desired Payment in Loan Payment Program?

  • Thread starter Thread starter Nicolaus
  • Start date Start date
  • Tags Tags
    Beginner Fortran
AI Thread Summary
The discussion revolves around modifying a Fortran program designed to solve quadratic equations and verify the roots. The initial program prompts users for coefficients a, b, and c, calculates the discriminant (delta), and determines the roots based on its value. If delta is positive, two roots are found; if zero, one root; and if negative, no real roots exist. A key modification discussed is the inclusion of a validation step to stop the program if a equals zero, indicating it's not a quadratic equation. Additionally, the program should verify the first root by calculating the left-hand side (LHS) of the equation using the formula ax^2 + bx + c. There is also a suggestion to verify both roots if two exist. The conversation transitions to a new program for managing loan payments, where users are prompted to make payments every 12 months based on the remaining loan amount. The program calculates the loan balance after applying interest and deducting payments, continuing until the loan is paid off.
Nicolaus
Messages
73
Reaction score
0
Can someone give him a head start re: the following Q:

We can make the program test itself by having it plug in the found root and evaluate the LHS (it should be zero). Complete the program by having it evaluate the LHS at x = root1.


! This program finds the roots of equations of the 2nd degree
! with coefficients a, b and c
program Equation
implicit none
real*4 a, b, c, delta
real*4 root1, root2
integer*1 count

! ----------------------------------------------Prompt and Input
print*, "Solves ax^2 + bx + c = 0"
print*, "Enter the coefficients a,b,c separated by commas..."
read*, a, b, c

! ----------------------------------------------Validate

! ----------------------------------------------Find delta
delta = b**2 - 4.* a * c

! ----------------------------------------------Determine Roots
if (delta .GT. 0.) then
root1 = (-b + sqrt(delta)) / (2. * a)
root2 = (-b - sqrt(delta)) / (2. * a)
count = 2
else if (delta .LT. 0.) then
count = 0
else
root1 = -b / (2. * a)
count = 1
end if

! ----------------------------------------------Show Results
if (count .EQ. 2) then
write(*,20) " Equation has two roots: ", root1, ", ", root2
else if (count .EQ. 1) then
write(*,20) " Equation has one root: ", root1
else
write(*,20) " Equation has no real roots!"
end if
20 format(1x, A, F10.4, A, F10.4)

! ----------------------------------------------Verify root1
if (count .GT. 0) then
print*, "Verifying the first root by computing the L.H.S.:"



end if

! ----------------------------------------------
end
 
Technology news on Phys.org
Well, the next move is up to you. You have the coefficients a,b, and c and the roots, root1 and root 2. Write a statement which combines these values according to the formula ax^2+bx+c
 
The previous Q asked me to modify the program under "Validate" so if a=0 then it stops the program from further computing, and now I need to output the root, if any, of the supplied 1st-degree equation. How do I modify the program to adopt this approach?


! This program finds the roots of equations of the 2nd degree
! with coefficients a, b and c
program Equation
implicit none
real*8 a, b, c, delta
real*8 root1, root2, x, LHS
integer*1 count

! ----------------------------------------------Prompt and Input
print*, "Solves ax^2 + bx + c = 0"
print*, "Enter the coefficients a,b,c separated by commas..."
read*, a, b, c

! ----------------------------------------------Validate
if (a .EQ. 0) then
print*, "This is not an equation of the 2nd degree!"
stop
end if

! ----------------------------------------------Find delta
delta = b**2 - 4.* a * c

! ----------------------------------------------Determine Roots
if (delta .GT. 0.) then
root1 = (-b + sqrt(delta)) / (2. * a)
root2 = (-b - sqrt(delta)) / (2. * a)
count = 2
else if (delta .LT. 0.) then
count = 0
else
root1 = -b / (2. * a)
count = 1
end if

! ----------------------------------------------Show Results
if (count .EQ. 2) then
write(*,20) " Equation has two roots: ", root1, ", ", root2
else if (count .EQ. 1) then
write(*,20) " Equation has one root: ", root1
else
write(*,20) " Equation has no real roots!"
end if
20 format(1x, A, F20.15, A, F20.15)

! ----------------------------------------------Verify root1
if (count .GT. 0) then
print*, "Verifying the first root by computing the L.H.S.:"
x = root1
LHS = a*x**2 + b*x + c
print*, "LHS = ", LHS
end if

! ----------------------------------------------
End
 
What if you have two roots? Aren't you supposed to verify both?

If you have a linear equation instead of a quadratic, how would you solve it?
 
Thanks, finished that one. Now, I wrote the following program and am wondering how I would write a code that prompts the user every 12 months to make a desired payment of up to 10% of what remains of the loan.

! ------- Loan Payment -------

program Borrow
implicit none

integer month
real loan, mPayment, interestRate

print*, "Enter the amount of the loan: "
read*, loan

print*, "Enter the annual interest rate (as a percent): "
read*, interestRate

print*, "Enter the monthly payment: "
read*, mPayment

print*, "Amount of the loan is: ", loan
print*, "Annual interest rate : ", interestRate
print*, "Your monthly payment is : ", mPayment

print*, "month loan"
month = 0
do while (loan .gt. 0)
loan = loan + loan*interestRate/100/12 - mPayment
month = month + 1
write(*,12), month, loan
12 format(1x, I5, F12.2)
end do

stop
end
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
12
Views
1K
Replies
11
Views
2K
Replies
19
Views
2K
Replies
8
Views
2K
Replies
22
Views
5K
Replies
5
Views
3K
Back
Top