TI-89 PAY program, infinite loop problem?

Click For Summary

Discussion Overview

The discussion revolves around a programming issue with a TI-89 calculator, specifically regarding a program designed to calculate loan payments. Participants are addressing an infinite loop problem and error messages encountered during execution, with a focus on the programming syntax and logic used in the code.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant describes encountering a "Warning: overflow replaced by infinity or negative infinity" error and an infinite loop when running their program.
  • Another participant questions the use of variable names and suggests that clearer naming could improve code readability.
  • Concerns are raised about the multiplication syntax used in the program, with suggestions to replace "btimes" with the multiplication symbol "*".
  • It is noted that the logic in the loop may cause the variable b to continually increase, leading to the infinite loop if the payment p is too small.
  • Participants discuss the differences in behavior between the TI-89 and other calculators like the TI-82 and TI-83, suggesting that the programming environment may affect the outcome.
  • A participant shares their test case inputs (APR: 18, Monthly Payment: 100, Loan: 1500) and notes that the outputs were not whole numbers, indicating potential issues with the program's calculations.

Areas of Agreement / Disagreement

Participants express various viewpoints on the programming logic and syntax, with no consensus reached on the exact cause of the infinite loop or the overflow error. The discussion remains unresolved regarding the effectiveness of the proposed solutions.

Contextual Notes

Some participants mention the limitations of the TI-BASIC programming language used in the TI-89, which may differ from other programming languages. There is also uncertainty about the expected behavior of the program based on the inputs provided.

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 ·
Replies
5
Views
5K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
5K
  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 6 ·
Replies
6
Views
7K
  • · Replies 4 ·
Replies
4
Views
9K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 4 ·
Replies
4
Views
7K