В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
AliceMysova
AliceMysova
08.09.2021 13:10 •  Информатика

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


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

Ответ:
sonya20067
sonya20067
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;

}


С++ ООП Очень вот мой код который считает арифметической прогрессию, но нужно чтобы первое значение
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?