while | (условие) | оператор |
while (balance < 20000)
{ month++;
balance
= balance * (1 + rate/12/100);
}
cout << "The investment
doubled after "
<<
month / 12.0 << " years.\n";
return 0;
}
* Факториел
#include <iostream>
using namespace std;
long factorial(int n)
{ int factor = 1;
long product = 1;
while (factor <= n)
{ product = product
* factor;
factor++;
}
return product;
}
int main()
{ cout << "Please enter a
number: ";
int n;
cin >> n;
cout << n <<
"! = " << factorial(n) << "\n";
return 0;
}
* Максимална стойност
#include <iostream>
using namespace std;
int main()
{ double next;
double highest;
cout << "Please enter
the temperature values:\n";
if (cin >> next)
highest = next;
else
{ cout << "No
data!\n";
return
1; }
while (cin >> next)
if
(next > highest) highest = next;
cout << "The highest
temperature is " << highest << "\n";
return 0;
}
Цикъл for
for | (инициализация; условие; корекция) | оператор |
for
(i=начало;
i<=край;
i++)
{
тяло
на цикъла
}
#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 | (условие); |
* Алгоритъм на Херон за намирана на корен квадратен:
x_0 = a;
x_(n+1) = (x_n + a/x_n)/2;
- получаваме безкрайна редица, спираме пресмятанията
когато |x_(n+1) - x_n| < eps
#include <iostream>
#include <cmath>
using namespace std;
bool not_equal(double x, double y)
{ const double EPSILON = 1E-14;
double dmax = fabs(x);
if (fabs(y) > dmax) dmax
= fabs(y);
return fabs(x - y) > dmax
* EPSILON;
}
double squareroot(double a)
{ if (a == 0) return 0;
double xnew = a;
double xold;
do
{ xold = xnew;
xnew =
(xold + a / xold) / 2;
}
while (not_equal(xnew, xold));
return xnew;
}
int main()
{ cout << "Please enter a
number: ";
double x;
cin >> x;
cout << "The square
root is " << squareroot(x) << "\n";
return 0;
}
Безкрайни цикли
for (i=1; i>0; i++) cout << i;
double squareroot(double a)
{
if (a == 0) return 0;
double xnew = a;
while (true)
{
double xold = xnew;
xnew = (xold + a/xold)/2;
if (equal(xnew, xold)) return xnew;
}
}
Конструкции с цикъл: четене
на данни и извеждане на таблици
* Четене на данни:
#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
|