Объяснение:
89/2=44 (остаток 1)
44/2=22 (0)
22/2=11 (0)
11/2=5 (1)
5/2=2 (1)
2/2=1(0)
1/2=0 (1)
89₁₀=1011001₂
73/2=36 (1)
36/2=18 (0)
18/2=9 (0)
9/2=4 (1)
4/2=2 (0)
2/2=1 (0)
1/2=0 (1)
73₁₀=1001001₂
1 0 1 1 0 0 1
+ 1 0 0 1 0 0 1
1 0 1 0 0 0 1 0
1 0 1 1 0 0 1
- 1 0 0 1 0 0 1
1 0 0 0 0
1 0 1 1 0 0 1
× 1 0 0 1 0 0 1
1 0 1 1 0 0 1
+ 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0
+ 1 0 1 1 0 0 1
+ 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0
+ 1 0 1 1 0 0 1
1 1 0 0 1 0 1 1 0 0 0 0 1
3268₁₀=110011000100₂ (как переводить числа в двоичную систему я расписал выше).
43₁₀=101011₂
110011000100 |_101011_
- 101011 | 1001100
1000000
- 10 10 1 1
1 0 1 0 1 1
- 1 0 1 0 1 1
0
Проверяем в конструкторе значения на данные признаки, если мы получаем ошибку инициализации, то даем переменным нулевые значения, дабы избежать ошибок в других функция. (грубо говоря, чтобы вся программа не легла из-за конструктора, благодаря выводу текстового сообщения мы будем знать где конкретно ошибка)
#include <iostream>
#include <cmath>
class Progression {
private:
float first;
int second;
public:
Progression(float a0, int d) {
if (a0 == round(a0)) {
std::cout << "Инициализация первого члена прогрессии с конструктора не удалась, первый элемент не должен быть целыми числом!\n";
this->first = 0;
}
else {
this->first = a0;
std::cout << "Инициализация первого члена прогрессии успешно!\n";
}
if (d < 0) {
std::cout << "Инициализация разности прогрессии с конструктора не удалась, разность должна быть положительной!\n";
this->second = 0;
}
else {
this->second = d;
std::cout << "Иницализация разности успешно!\n";
}
}
float operator()(int j){
return this->first + this->second * (j - 1);
}
};
signed main() {
setlocale(LC_ALL, "Rus");
float a;
int b;
std::cout << "Введите значение a0 и d: ";
std::cin >> a >> b;
Progression p1(a, b);
std::cout << p1(2);
return 0;
}