Пояснить код C++ Калькулятор Описать код, закомментировать, что где происходит, нужно для курсовой работы.
#include
#include
double number();
double factor();
double expr();
double brackets();
int main()
{
double n;
setlocale(LC_ALL, "Rus");
std::cout = '0' && c = '0' && c <= '9')
{
result += (c - '0') / k;
k *= 10.0;
}
else
{
std::cin.putback(c);
break;
}
}
}
else
std::cin.putback(c);
return sign * result;
}
double factor()
{
double result = brackets();
double temp;
char c;
while (true)
{
c = std::cin.get();
while (c == ' ')
c = std::cin.get();
switch (c)
{
case '*':
result *= brackets();
break;
case '/':
temp = brackets();
if (temp == 0.0)
{
std::cout << "Деление на нуль!" << std::endl;
exit(-1);
}
result /= temp;
break;
default:
std::cin.putback(c);
return result;
}
}
}
double expr()
{
double result = factor();
char c;
while (true)
{
c = std::cin.get();
while (c == ' ')
c = std::cin.get();
switch (c)
{
case '+':
result += factor();
break;
case '-':
result -= factor();
break;
default:
std::cin.putback(c);
return result;
}
}
}
double brackets()
{
double result;
int sign = 1;
char c;
c = std::cin.get();
while (c == ' ')
c = std::cin.get();
if (c == '-')
{
sign = -1;
c = std::cin.get();
}
while (c == ' ')
c = std::cin.get();
if (c == '(')
{
result = sign * expr();
c = std::cin.get();
if (c != ')')
{
std::cout << "Неверная расстановка скобок!" << std::endl;
exit(-1);
}
return result;
}
else
{
std::cin.putback(c);
return sign * number();
}
}
const Radian = 57.295779513; //Сколько градусов в одном радиане
var
a, b, c: real; //Стороны, лежащие против углов A, B и C соответственно
begin
writeln('Введите 3 стороны треугольника в следующем порядке: a, b, c');
readln(a, b, c);
if (sqr(a) = sqr(b) + sqr(c)) or (sqr(b) = sqr(a) + sqr(c)) or (sqr(c) = sqr(a) + sqr(b)) then writeln('Треугольник ABC - прямоугольный') {Если хотя бы для одной из сторон выполняется теорема Пифагора, то данный треугольник прямоугольный}
else writeln('Угол C равен: ', arccos((sqr(a) + sqr(b) - sqr(c)) / (2 * a * b)) * Radian, ' градусов'); {Выражаем из теоремы косинусов косинус угла C, берем arccos от него и умножаем получившееся значение на количество градусов в радиане, чтобы получить ответ в градусах}
end.
Пользоваться компилятором Pascal ABC.Net, потому что это единственный компилятор из всех известных мне, который поддерживает функцию arccos.
Если будут вопросы, спрашивай.
var
a, b, c: real;
begin
writeln('Введите 3 любых числа');
readln(a, b, c);
if (a < b) and (a < c) then writeln(a, ' - наименьшее число');
if (b < a) and (b < c) then writeln(b, ' - наименьшее число');
if (c < a) and (c < b) then writeln(c, ' - наименьшее число');
if (a > b) and (a > c) then writeln(a, ' - наибольшее число');
if (b > a) and (b > c) then writeln(b, ' - наибольшее число');
if (c > a) and (c > b) then writeln(c, ' - наибольшее число');
readln; //Убрать если среда разработки не Turbo Pascal
end.