Calculators TI-89 PAY program, infinite loop problem?

AI Thread Summary
The discussion revolves around a TI-89 program designed to calculate loan payments, which is encountering an infinite loop and overflow errors. The user initially faced issues with variable unlocking and received a warning about overflow being replaced by infinity. The program's logic was scrutinized, with suggestions to clarify variable names and ensure proper multiplication syntax. Key points include the potential for the loop to become infinite if the condition of the while statement (b > p) is not properly managed, leading to an increase in b instead of a decrease. The user confirmed the program was still malfunctioning despite attempts to fix it, and a test case with specific inputs (APR: 18, Monthly Payment: 100, Loan: 1500) was provided to illustrate the problem. The discussion highlights the importance of correct syntax and logical flow in programming, particularly in TI-BASIC, which is used on the TI-89.
TTPW
Messages
4
Reaction score
0
TI-89 "PAY" program, infinite loop problem?

I have tried to write a program required for class (Math Analysis, junior in high school, everyone else has an 83 or 82 but my grandmother bought me this one...so nobody else has been able to help yet) but after solving one error message (I had to unlock a variable) another problem comes up. "Warning: overflow replaced by infinity or negative infinity." When I break the program's functioning by pressing ON it consistently takes me to the same place. Here's the entire program. I bolded the spot where Error: Break takes me to. I used lowercase letters, if there is an upper case letter that's because the lower case was easy to confuse with a number.
:pay()
:Prgm
:Input "loan", b
:Input "apr", r
:Input "payment", p
:b->L
:While p (less than or equal to sign goes here)btimesr/1200
:Disp "payment too small"
Input "payment=", p
EndWhile
0->n
1+r/1200->m
While b>p
btimesp-p->b
n+L->n
EndWhile
ptimesn+b->t
t-L->i
Disp "number payments", n
Disp "last payment", b
Disp "total paid", t
Disp "interest", i
EndPrgm
 
Computer science news on Phys.org


TTPW said:
I have tried to write a program required for class (Math Analysis, junior in high school, everyone else has an 83 or 82 but my grandmother bought me this one...so nobody else has been able to help yet) but after solving one error message (I had to unlock a variable) another problem comes up. "Warning: overflow replaced by infinity or negative infinity." When I break the program's functioning by pressing ON it consistently takes me to the same place. Here's the entire program. I bolded the spot where Error: Break takes me to. I used lowercase letters, if there is an upper case letter that's because the lower case was easy to confuse with a number.
I don't have any experience with TI-89 programming, so I'm not sure what it allows you to do. Can you have variable names with more than one letter? Your program would be easier to follow if the variable names were more suggestive of what they represent.

Also, put code inside [ code] and [ /code] tags (without the extra space that I included)
TTPW said:
Code:
:pay()
:Prgm
:Input "loan", b
:Input "apr", r
:Input "payment", p
:b->L
:While p (less than or equal to sign goes here)btimesr/1200
Does your code actually use btimesr? I would think it would be something like b * r/1200
TTPW said:
Code:
:Disp "payment too small"
Input "payment=", p
EndWhile
0->n
1+r/1200->m
While b>p
[B]btimesp-p->b[/B]
Should this be b * p - p -> b?
If you have an infinite loop here, it is because b > p and the line below isn't decrementing b to the point where b <= p.
TTPW said:
Code:
n+L->n
EndWhile
ptimesn+b->t
p * n + b -> t ?
TTPW said:
Code:
t-L->i
Disp "number payments", n
Disp "last payment", b
Disp "total paid", t
Disp "interest", i
EndPrgm
 


Since the loop implies B>P, it's likely that B*P-P = P(B-1) > B unless P is small. Thus, B continually increases causing the infinite loop.

Mark, FYI the TI-89 uses a limited version of BASIC called TI-BASIC. (I remember the language fondly from my high school days with a TI-84, in the way that horrible experiences are sometimes remembered fondly after being done with them. It's a great language to tinker with, but once you've used a full programming language you wonder how you ever managed with it...)
 
Last edited:


whenever I put "times" i meant the symbol. I knew using x would have made things horribly confusing and I didn't put much thought into what else I could use. Its weird how the math wouldn't come out right because it works on the 82 and 83, I'd think that they would have the same problem
 


TTPW said:
whenever I put "times" i meant the symbol. I knew using x would have made things horribly confusing and I didn't put much thought into what else I could use. Its weird how the math wouldn't come out right because it works on the 82 and 83, I'd think that they would have the same problem
Typically, "*" is used for the multiplication symbol.

Does it work now, or is it still giving the same error? If it's still not working, I can help. But, it would be helpful to know exactly what the program is supposed to do.
 


What is your test case? I ran your code on an 84 and ended up with an overflow.
 


Yes its still giving the same error. What is a test case?
And the program is supposed to tell you the number payments, last payment, total paid, and the amount of interest spent after you plug in the info requested at the beginning. We're in a finance unit. Well, we were, the test is over (I borrowed another person's calculator with the working program).
 


I.e. the inputs you used with a known answer to test the program.
 


Ah, well thank you. APR: 18 Monthly Payment: 100 Loan: 1500
The answers weren't whole numbers. I memorized the inputs because I tested it so many times trying to figure out how to make it work. If you get answers that aren't even numbers I'll search through my homework to find the problem.
 

Similar threads

Replies
5
Views
5K
Replies
1
Views
2K
Replies
1
Views
5K
Replies
4
Views
5K
Replies
6
Views
7K
Replies
4
Views
9K
Replies
2
Views
3K
Replies
4
Views
7K
Back
Top