#pragma argsused
int main (int argc, char* argv[])
{
cout << «*\n»;
cout << «* *\n»;
cout << «* *\n»;
cout << «* *\n»;
cout << «* *\n»;
cout << «* *\n»;
cout << «*\n»;
getch();
return 0;
}
// –
Откомпилируйте код этой программы, запустите на выполнение и проверьте результат.
3. Арифметические операции и математические функции
Выполнение вычислений составляют основу подавляющего большинства компьютерных программ. Для этой цели C++ использует множество арифметических операций, каждая из которых имеет свой знак. Ниже приведена таблица наиболее употребительных бинарных операций, то есть операций c двумя аргументами, с примерами их программной записи
название операции | знак в С/C++ | алгебраическое выражение | запись на С/C++ |
сложение | + | f + 7 | f + 7 |
вычитание | - | p –c | p – c |
умножение | * | bm | b*m |
деление | / | x/y | x/y |
остаток от деления | % | r mod s | r% s |
Круглые скобки в арифметических выражениях C++ используются так же, как в алгебре. При определении порядка вычислений сложных выражений C++ придерживается стандартных правил старшинства операций: первыми выполняются операции в скобках; затем операции умножения, деления, и вычисления остатка; в завершение – операции сложения и вычитания. Пример:
алгебра:
® запись на С/C++: .В последнем выражении скобки необходимы для сохранения правильного порядка операций – сначала суммирование, затем деление.
Кроме арифметических операций, язык C++ дает удобные возможности использования математических функций. Большая их часть содержится в библиотеке math.h, и для пользования ими требуется соответствующая директива #include <math.h>. Наиболее употребительные математические функции приведены в таблице:
название функции | обозначение | запись в С/С++ |
синус | sin(x) | |
косинус | cos(x) | |
тангенс | tan(x) | |
квадратный корень | sqrt(x) | |
возведение в степень | pow (x, y) | |
экспонента | exp(x) | |
натуральный логарифм | log(x) | |
модуль | fabs(x) | |
арксинус | asin(x) | |
арккосинус | acos(x) | |
арктангенс | atan(x) |
Все перечисленные функции принимают в качестве аргумента вещественную переменную (или константу) и возвращают вещественный результат. Использовать функции можно путем их вызова, аналогично вызову функций ввода-вывода. Например, в результате выполнения следующего набора операторов переменная y получит значение квадратного корня из 2:
float x = 2.0; float y = sqrt(x);
В библиотеке math.h также определены некоторые часто используемые математические константы, часть из которых приведена ниже
константа | запись в С/С++ |
M_PI | |
M_E | |
M_LN2 | |
M_LN10 |
Необходимо написать программу, запрашивающую у пользователя длины сторон треугольника a, b, c и выводящую на экран углы a, b, g.
Решение. Воспользуемся известной формулой косинусов, которую последовательно применим для нахождения всех углов треугольника. Рассчитанные значения a, b, g переведем из радианов в градусы, помножив их на 180°/p.
// – Расчет углов треугольника –
#pragmahdrstop
#include <iostream.h> // для потокового ввода-вывода
#include <conio.h> // для getch()
#include <math.h> // для acos(x) и M_PI
#pragma argsused
int main (int argc, char* argv[])
{
floata, b, c; // объявляем переменные a, b, c
cout << «inputa–»; // выводим на экран приглашение
cin >> a; // вводим значение a, и т.д.
cout << «input b –»;
cin >> b;
cout << «input c –»;
cin >> c;
floatalpha, betta, gamma; // объявляем переменные
alpha = acos((b*b + c*c – a*a)/(2*b*c)); // считаем alpha
betta = acos((a*a + c*c – b*b)/(2*a*c)); // считаем betta
gamma = acos((a*a + b*b – c*c)/(2*a*b)); // считаем gamma
cout << «\n alpha =» << alpha/M_PI*180; // выводимвсе
cout << «\n betta =» << betta/M_PI*180; // углынаэкран
cout << «\n gamma =» << gamma/M_PI*180; // (вградусах)
cout << «\n» << alpha + betta + gamma; // суммауглов=pi?
getch(); // задержка
return 0; // завершение
}
// –