14. Цикли for и do/while Безкрайни цикли
Цикъл for
for (инициализация; условие; корекция) оператор
#include <iostream>
using namespace std;
long factorial(int n)
{  long product = 1;
   int factor;

   for (factor = 1; factor <= n; factor++)
   {  product = product * factor;   }
   return product;
}

int main()
{  cout << "Please enter a number: ";
   int n;
   cin >> n;
   cout << n << "! = " << factorial(n) << "\n";
   return 0;
}

Цикъл do/while

do оператор while (условие);

Конструкции с цикъл: четене на данни и извеждане на таблици
* Четене на данни:
#include <iostream>
#include <string>
using namespace std;
int main()
{  int count = 0;
   string word;
   while (cin >> word)  count++;
   cout << count << " words.\n";
   return 0;
}

* Пренасочване на входния и изходния потоци
C:\my\>myprog < a_cin.txt
C:\my\>myprog > a_cout.txt

* Извеждане на таблици със стойности
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

double future_value(double initial_balance,  double p, int nyear)
/*
ЦЕЛ:       Пресмята стойността на влог със сложна лихва
ПОЛУЧАВА:  initial_balance - начална стойност на влога
           p - годишен лихвен процент
           nyear - броя на годините
ЗАБЕЛЕЖКИ: Лихвата се начислява всеки месец
*/
{  double b = initial_balance *pow(1 + p/12/100, 12*nyear);
   return b;
}
int main()
{ cout << "      Rate   Balance\n\n";
  double rate;
  double initial_amount = 10000;
  int nyear = 10;

  cout << fixed << setprecision(2);
  for (rate = 5; rate <= 10; rate = rate + 0.5)
  { double balance = future_value(initial_amount, rate, nyear);
    cout << setw(10) << rate << setw(10) << balance << "\n";     }
   return 0;
}

 Rate   Balance

 5.00  16470.09
 5.50  17310.76
 6.00  18193.97
 6.50  19121.84
 7.00  20096.61
 7.50  21120.65
 8.00  22196.40
 8.50  23326.47
 9.00  24513.57
 9.50  25760.55
10.00  27070.41

Вложени цикли
* Таблица за сумата по влог за 5, 10, 15, 20, 25 и 30 години при годишна лихва от 5 до 10% (през 0.5%).

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

double future_value(double init_balance, double p, int n)
{  double b = init_balance*pow(1 + p/12/100, 12*n);
   return b;   }

int main()
{
 const double RATE_MIN = 5;
 const double RATE_MAX = 10;
 const double RATE_INCR = 0.5;
 const int YEAR_MIN = 5;
 const int YEAR_MAX = 30;
 const int YEAR_INCR = 5;

/* print table header */
 cout << " Rate  ";
 int year;
 for (year=YEAR_MIN; year<=YEAR_MAX; year=year+YEAR_INCR)
 { cout << setw(2) << year << " years  "; }
 cout << "\n";

 cout << fixed << setprecision(2);
 double rate;
 double init_bal = 10000;
 for (rate=RATE_MIN; rate<=RATE_MAX; rate=rate+RATE_INCR)
/* print table row */
 { int year;
   cout << setw(5) << rate;
   for (year=YEAR_MIN; year<=YEAR_MAX; year=year+YEAR_INCR)
   { double balance = future_value(init_bal, rate, year);
     cout << setw(10) << balance;   }
   cout << "\n";
 }
 return 0;
}

 Rate   5 years  10 years  15 years  20 years  
  5.0  12833.59  16470.09  21137.04  27126.40
  5.5  13157.04  17310.76  22775.84  29966.26
  6.0  13488.50  18193.97  24540.94  33102.04
  6.5  13828.17  19121.84  26442.01  36564.47
  7.0  14176.25  20096.61  28489.47  40387.39
  7.5  14532.94  21120.65  30694.52  44608.17
  8.0  14898.46  22196.40  33069.21  49268.03
  8.5  15273.01  23326.47  35626.53  54412.43
  9.0  15656.81  24513.57  38380.43  60091.52
  9.5  16050.09  25760.55  41345.93  66360.61
 10.0  16453.09  27070.41  44539.20  73280.74