Поделитесь своими знаниями, ответьте на вопрос:
Напишите алгоритм вычисления платы за пользование телефоном для введённого времени разговоров в месяц. Услуги телефонной сети оплачиваются последующемуправилу: за разговоры до а минут – b рублей в месяц, а разговоры сверх установленнойнормы оплачиваются дополнительно из расчёта c рублей за минуту.Нужно составить математическую модель и алгоритм в виде блок-схемы.
#define UPPERLIMIT 1000
#define LOWERLIMIT 0
#include <iostream>
#include <vector>
#include <cstddef>
#include <algorithm>
#include <ctime>
using namespace std;
class Massive {
public:
virtual void fill() = 0;
virtual int get_max() = 0;
virtual int get_min() = 0;
virtual void reverse(int start, int end) = 0;
virtual void out() = 0;
};
class MassiveHandler : public Massive {
private:
std::vector<int>::iterator result;
public:
std::vector<int> array;
MassiveHandler(std::size_t n) : array(n) {
this->fill();
}
void fill() override {
srand(time(0));
for (int i = 0; i < this->array.size(); ++i)
this->array[i] = rand() % (UPPERLIMIT - LOWERLIMIT + 1) + LOWERLIMIT;
}
void routine() {
this->reverse(this->get_min(), this->get_max());
}
void reverse(int start_v, int end_v) override {
if (start_v > end_v)
swap(start_v, end_v);
for (int i = start_v, j = end_v; i < j; i++, j--)
swap(this->array[i], this->array[j]);
}
int get_max() override {
this->result = std::max_element(this->array.begin(), this->array.end());
return std::distance(this->array.begin(), result);
}
int get_min() override {
this->result = std::min_element(this->array.begin(), this->array.end());
return std::distance(this->array.begin(), result);
}
void out() override {
for (int i = 0; i < this->array.size(); ++i)
cout << this->array[i] << " ";
cout << endl;
}
};
int main() {
int n;
cin >> n;
MassiveHandler *MH = new MassiveHandler(n);
cout << "MAX: " << MH->array[MH->get_max()] << endl;
cout << "MIN: " << MH->array[MH->get_min()] << endl;
cout << endl;
cout << "Before: ";
MH->out();
MH->routine();
cout << "After: ";
MH->out();
}