С++ ООП Очень вот мой код который считает арифметической прогрессию, но нужно чтобы первое значение было дробовое а разница всегда положительной. Я сделала проверку через if, но она в Майне, а должна быть в конструкторе publice . Как это реализовать?


С++ ООП Очень вот мой код который считает арифметической прогрессию, но нужно чтобы первое значение

ijulijuli23 ijulijuli23    1   09.10.2021 20:34    1

Ответы
SokhraNNaya SokhraNNaya  09.10.2021 20:40

Проверяем в конструкторе значения на данные признаки, если мы получаем ошибку инициализации, то даем переменным нулевые значения, дабы избежать ошибок в других функция. (грубо говоря, чтобы вся программа не легла из-за конструктора, благодаря выводу текстового сообщения мы будем знать где конкретно ошибка)

#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;

}


С++ ООП Очень вот мой код который считает арифметической прогрессию, но нужно чтобы первое значение
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика