Модуль 1.6 (Действительные числа) Данный модуль научит работать с числами с плавающей точкой (то есть с действительными числами).
Ниже представлены примеры задач с решением на C++ на тему Действительные числа.
Дано положительное действительное число X. Выведите его дробную часть.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double x;
cin >> x;
cout << x - trunc(x);
return 0;
}
Дано положительное действительное число X. Выведите его первую цифру после десятичной точки.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double x;
cin >> x;
cout << int(trunc(x*10)) % 10;
return 0;
}
Даны длины сторон треугольника. Вычислите площадь треугольника.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double a, b, c, s, p;
cin >> a;
cin >> b;
cin >> c;
p = (a + b + c) / 2;
s = sqrt(p*(p - a)*(p - b)*(p - c));
cout << s;
return 0;
}
Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада в конце года. Вклад составляет X рублей Y копеек. Определите размер вклада через год.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double p, x, y, sum;
cin >> p;
cin >> x;
cin >> y;
sum = x + 0.01 * y;
sum = sum * (1 + p/100);
cout << trunc(sum) << " " << trunc(sum*100 - trunc(sum)*100);
return 0;
}
Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада через год. Вклад составляет X рублей Y копеек. Определите размер вклада через K лет.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double p, x, y, k, i, sum;
cin >> p;
cin >> x;
cin >> y;
cin >> k;
sum = x + 0.01 * y;
i = 0;
while(i < k) {
sum = sum * (1 + p / 100);
sum = trunc(sum*100)/100;
i++;
}
cout << trunc(sum) << " " << trunc(sum * 100 - trunc(sum) * 100);
return 0;
}
Определите среднее значение всех элементов последовательности, завершающейся числом 0.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double n, sum, mean;
int i;
std::cout.precision(10);
sum = 0;
i = 0;
n = 1;
while (n != 0) {
cin >> n;
sum += n;
i++;
}
mean = sum / (i - 1);
cout << mean;
return 0;
}
Дана последовательность натуральных чисел x1, x2, …, xn. Стандартным отклонением называется величина
где
— среднее значение последовательности.
Определите стандартное отклонение для данной последовательности натуральных чисел, завершающейся числом 0.
using namespace std;
#include <iostream>
#include <iomanip>
#include <cmath>
int main() {
double a,n=0,s,p;
cin >> a;
s = a;
p = a*a;
while (a != 0){
n++;
cin >> a;
s = s + a;
p = p + a*a;
}
cout << fixed << setprecision(12);
cout << sqrt((p - (s*s / n)) / (n - 1));
return 0;
}
Дан многочлен P(x)=anxn + an−1xn−1+ … + a1x + a0 и число x. Вычислите значение этого многочлена, воспользовавшись схемой Горнера:
P(x)=(…(((anx + an−1)x + an−2)x + an−3) … )x+ a0
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
double n, x, a,k,o=1;
cin >> n >> x >> a ;
if (n == 0) {
cout << a;
}
else {
k = a*x;
while (o != n + 1) {
cin >> a;
if (o == 1) {
k = k + a;
o++;
}
else {
k = k *x + a;
o++;
}
}
cout << k;
}
return 0;
}
Даны действительные коэффициенты a, b, c, при этом a ≠ 0 . Решите квадратное уравнение ax2 + bx + c = 0 и выведите все его корни.
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double a, b, c;
cin >> a >> b >> c;
double b1=b/a; //x^2-x-2=0
double c1=c/a; //(x-1/2)^2-2-1/4=0
double b2=b1/2; //(x-0.5)=2.25
double c2=-c1+b2*b2; //x-0.5=+-1.5
if (c2==0){ //x=1; x=-2
cout << -b2;
} else {
if (c2>0){
cout << -sqrt(c2)-b2 << " " << sqrt(c2)-b2;
}
}
}
Даны действительные коэффициенты a, b, c. Решите уравнение ax2 + bx + c = 0 и выведите все его корни.
#include <iostream>
#include <cmath>
int main() {
double a,b,c;
std::cin >> a>> b>> c;
std::cout << std::fixed << std::showpoint;
std::cout.precision(6);
if(a){
double d=b*b-4*a*c;
if(d>0){
if (a>0)
std::cout<< 2 <<" "<< (-b-std::sqrt(d))/(2*a) << " "<< (-b+std::sqrt(d))/(2*a);
else
std::cout<< 2 <<" " << (-b+std::sqrt(d))/(2*a) << " "<< (-b-std::sqrt(d))/(2*a);
}else if(d==0)
std::cout<< 1 <<" " << (-b)/(2*a);
else
std::cout << 0;
}else if(b)
std::cout<< 1 <<" " << -c/b;
else if(c)
std::cout<< 0;
else
std::cout<< 3;
return 0;
}
Даны вещественные числа a, b, c, d, e, f. Известно, что система линейных уравнений
имеет ровно одно решение. Выведите два числа x и y, являющиеся решением этой системы.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double a,b,c,d,e,f,x,y;
cin >> a;
cin >> b;
cin >> c;
cin >> d;
cin >> e;
cin >> f;
x = (d*e - b * f) / (a*d - b * c);
y = (a*f - c * e) / (a*d - b * c);
cout << x << " " << y;
}
Даны вещественные числа a, b, c, d, e, f. Решите систему линейных уравнений
#include <iostream>
using namespace std;
int main() {
double a, b, c, d, e, f;
double x, y;
const int no_roots = 0;
const int kx_roots = 1;
const int one_xy_root = 2;
const int one_x = 3;
const int one_y = 4;
const int inf_roots = 5;
cin >> a >> b >> c >> d >> e >> f;
double det = a * d - b * c;
double det_x = (e * d - b * f);
double det_y = (a * f - e * c);
bool x_null = a == 0 && c == 0;
bool y_null = b == 0 && d == 0;
if (det != 0) {
x = det_x / det;
y = det_y / det;
cout << one_xy_root << ' ' << x << ' ' << y;
}
else {
if (det_x == 0 && det_y == 0) {
if (x_null && y_null) {
if (e != 0 || f != 0) {
cout << no_roots;
}
else {
cout << inf_roots;
}
}
else if (x_null) {
if (b != 0) {
y = e / b;
}
else {
y = f / d;
}
cout << one_y << ' ' << y;
}
else if (y_null) {
if (a != 0) {
x = e / a;
}
else {
x = f / c;
}
cout << one_x << ' ' << x;
}
else {
double bi, k;
if (b != 0) {
bi = e / b;
k = -a / b;
}
else {
bi = f / d;
k = -c / d;
}
cout << kx_roots << ' ' << k << ' ' << bi;
}
}
else {
cout << no_roots;
}
}
return 0;
}
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы