I got your code to compile and run sensibly, (I didn't check the result, only that it didn't loop), by removing your declarations from inside your loop thus...
Code:
void LoanCalc(double a, double b, double c)//function definition
{
double MonIntRate;
double MonInt;
double PrinPymt;
double TotIntPd;
cout << "\n\tPymt #\t\tMon's Int\tBalance\t\tTot Int Pd\n";
cout << "\t==========================================\n";
cout << fixed << showpoint << right << setprecision(2);
double Balance = a;
int count = 0;
for(;;)
{
count ++;
MonIntRate = b / 12;
MonInt = a * MonIntRate;
PrinPymt = c - MonInt;
TotIntPd = TotIntPd + MonInt;
Balance = Balance - PrinPymt;
cout << count << "\t" << MonInt << "\t" << Balance << "\t" << TotIntPd << "\n";
if(Balance <= c) cout << "\tLast Pymt\t" << Balance + (Balance * MonIntRate) << "\t"
<< (Balance + (Balance * MonIntRate)) + TotIntPd;
else break;
}
}
... I never declare variables the way you are, always at the top of the routine. C++ allows you to declare anywhere, just because it is legal, doesn't make it good style, and now as you've seen, can cause you all kinds of problems if you're not careful.
As an aside, why are you declaring yopur main as float with three parameters and actually returning an integer without ever passing any parameters to main() ???