Hell
Сливане на низове
string fname = "Nikolay";
string lname = "Kirov";
string name = fname + lname;
NikolayKirov
string name = fname + " " + lname;
Nikolay Kirov
Поне един от аргументите на сливането трябва да е променлива
Форматиран изход
Използване на обекти
* член-функции на класа:
Time wake_up(7,0,0);
// 7:00:00
wake_up.add_seconds(1000); // 7:16:40
* функции на класа Time:
Име | Действие |
Time() | Конструира обект, показващ текущото време |
Time(h,m,s) | Конструира обект, показващ h часа, m минути и s секунди |
t.get_seconds() | Връща броя на секундите в t. |
t.get_minutes() | Връща броя на минутите в t. |
t.get_hours() | Връща броя на часовете в t. |
t.add_seconds(n) | Премества t с nсекунди напред. |
t.seconds_from(t2) | Пресмята броя на секундите между t и t2. |
cout << "There
are " << seconds_left
<< " seconds left in this day.\n";
return 0; }
Обекти от реалния
свят
if | ( условие) | оператор; |
Операции за числови
сравнения
> | по-голямо |
>= | по-голямо или равно |
< | по-малко |
<= | по-малко или равно |
== | равно |
!= | различно |
Проверка за валидност на входните данни
Операторът
if/else
#include <iostream>
using namespace std;
int main()
{
double a, b, c;
cout << "Enter
the coeficients a, b and c:";
cin >> a >> b >> c;
double det = b*b -
4*a*c;
if (det >= 0)
{
double x1 = (-b+sqrt(det))/(2*a);
double x2 = (-b-sqrt(det))/(2*a);
cout << "The
roots are: " << x1 << " and " << x2;
}
else cout <<
"The equation has no real roots."
return 0;
}
if | (условие) | оператор1; | else | оператор2; |
Програмиране на алтернативи
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
string name;
cin >> n >>
name;
name = name.substr(0,
4);
double value = 0;
if (name ==
"penn")
value = n * 0.01;
else if (name
== "nick")
value = n * 0.05;
else if (name
== "dime")
value = n * 0.10;
else if (name
== "quar")
value = n * 0.25;
else
cout <<
name << " is not a valid coin name\n";
cout <<
"Value = " << value << "\n";
return 0;
}
А
без операторите else?
if
(name == "penn") value = n * 0.01;
if (name == "nick")
value = n * 0.05;
if (name == "dime")
value = n * 0.10;
if (name == "quar")
value = n * 0.25;
Вложени условни оператори
if (x > 0) {
if (y >= 0) {cout <<
y/x; }
cout << y*x;
}
|
|
|
Закони на де Морган
[Аугуст де Морган (1806-1871)]
* отрицание на конюнкция
not (A and B)
дава същия резултат както
(not A) or (not B)
* отрицание на дизюнкция
not (A or B)
дава същия резултат както
(not A) and (not B)
Логически операции
* Да изразим условието, че даден адрес се намира извън
континенталната част на САЩ, т.е. друга държава или щатите Аляска и Хавай.
not (country == "USA" and state != "AK" and state != "HI")
state != "AK" and state != "HI"
not (state == "AK") and not (state == "HI")
not (state == "AK" or state == "HI")
not (country == "USA" and not (state == "AK" or state == "HI"))
not (country == "USA") or (state == "AK" or state == "HI")
country != "USA" or state == "AK" or
state == "HI"
* Проверка дали сме пропуснали даден момент от време - фиксиран час и минути.
#include <iostream>
using namespace std;
#include "ccc_time.cpp"
int main()
{
cout << "Enter the
time that the homework is due"
cout << " (hours minutes):
";
int hours;
int minutes;
cin >> hours >> minutes;
Time homework_due(hours,
minutes, 0);
Time now;
if (now.get_hours() < homework_due.get_hours()
or
(now.get_hours()
== homework_due.get_hours()
and now.get_minutes() <=
homework_due.get_minutes()))
cout <<
"Still time to finish the homework.\n";
else
cout <<
"The homework is already past due.\n";
return 0;
}
* Отложени пресмятания
- За оператора end - ако първият
аргумент е false
- За оператора or -
ако първият аргумент е true
double area;
cin >> area;
if (cin.fail() or area < 0) cout << "Input
error";
Булеви променливи
bool ship_by_air = false;
if (country != "USA") ship_by_air = true;
else if (state == "AK" or state == "HI")
ship_by_air = true;
if (ship_by_air) shipping_charge = 20;
else shipping_charge = 10;
Стойност на булева променлива може да бъде една от двете стойности
(константи) true или false.