C/C++
Помогите написать код C++
Задан массив целых чисел. Удалить все элементы, стоящие левее максимального.
#include <iostream>
using namespace std;
class Array {
public:
Array() = delete;
Array(const Array&) = delete;
Array(Array&&) = delete;
Array& operator=(const Array&) = delete;
Array& operator=(Array&&) = delete;
explicit Array(const int n) : n(n), box(new int[n]), m(0) {}
explicit Array(initializer_list<int> lst) : n(lst.size()), box(new int[n]), m(0) {
copy(lst.begin(), lst.end(), begin());
}
~Array() {
if (box != nullptr) {
delete[] box;
box = nullptr;
}
}
int& operator[](int index) {
return box[index + m];
}
int* max_element() {
auto pmax = begin();
for (auto it = begin() + 1; it != end(); ++it) {
if (*it > *pmax) pmax = it;
}
return pmax;
}
int* min_element() {
auto pmin = begin();
for (auto it = begin() + 1; it != end(); ++it) {
if (*it < *pmin) pmin = it;
}
}
void remove_left(const int* pos) {
m = pos - begin();
}
int& front() {
return *begin();
}
int& back() {
return *(end() - 1);
}
int size()const {
auto x = n - m;
return x < 0? 0 : x;
}
bool empty()const {
return n == 0 || m >= n || box == nullptr;
}
int* begin()const {
return box + m;
}
int* end()const {
return box + n;
}
private:
int n;
int* box;
int m;
friend ostream& operator<<(ostream& out, const Array& box) {
for (auto x : box) out << x << ' ';
return out;
}
};
int main() {
Array box{ 15, 37, 28, 61, 92, 14, 37, 64, 87, 62, 48 };
cout << box << "\nArray size: " << box.size() << '\n';
box.remove_left(box.max_element());
cout << box << "\nArray size: " << box.size() << '\n';
system("pause > nul");
}
using namespace std;
class Array {
public:
Array() = delete;
Array(const Array&) = delete;
Array(Array&&) = delete;
Array& operator=(const Array&) = delete;
Array& operator=(Array&&) = delete;
explicit Array(const int n) : n(n), box(new int[n]), m(0) {}
explicit Array(initializer_list<int> lst) : n(lst.size()), box(new int[n]), m(0) {
copy(lst.begin(), lst.end(), begin());
}
~Array() {
if (box != nullptr) {
delete[] box;
box = nullptr;
}
}
int& operator[](int index) {
return box[index + m];
}
int* max_element() {
auto pmax = begin();
for (auto it = begin() + 1; it != end(); ++it) {
if (*it > *pmax) pmax = it;
}
return pmax;
}
int* min_element() {
auto pmin = begin();
for (auto it = begin() + 1; it != end(); ++it) {
if (*it < *pmin) pmin = it;
}
}
void remove_left(const int* pos) {
m = pos - begin();
}
int& front() {
return *begin();
}
int& back() {
return *(end() - 1);
}
int size()const {
auto x = n - m;
return x < 0? 0 : x;
}
bool empty()const {
return n == 0 || m >= n || box == nullptr;
}
int* begin()const {
return box + m;
}
int* end()const {
return box + n;
}
private:
int n;
int* box;
int m;
friend ostream& operator<<(ostream& out, const Array& box) {
for (auto x : box) out << x << ' ';
return out;
}
};
int main() {
Array box{ 15, 37, 28, 61, 92, 14, 37, 64, 87, 62, 48 };
cout << box << "\nArray size: " << box.size() << '\n';
box.remove_left(box.max_element());
cout << box << "\nArray size: " << box.size() << '\n';
system("pause > nul");
}
Ильсур Латыпов
просто написано слишком сложно. Мы ток начал массивы, и половину того, что написано не понимаю...
находишь позицию максимального и через erase убираешь слева пока максимальное не станет 0 по индексу
Александр Русаков
а что за функция erase, у нас такой нету в методичке
Что это ещё за бред? Массив какой - статический локальный или глобальный, динамический или VLA из "кучи"? И откуда это он "задан" - вводится с экрана в интерактивном сеансе, инициализуется, программируется, задаётся рандомно или из файла считывается? А что это за "максимальный элемент" - самый первый или последний? Вот массив:
{1,2,3,2,3,2,3}, в котором три максимальных элемента. В данном случае делать что надо?
。◕‿◕。
{1,2,3,2,3,2,3}, в котором три максимальных элемента. В данном случае делать что надо?
。◕‿◕。
Александр Русаков
одно максимальное значение
Ты начал писать?
Александр Русаков
немного
Александр Русаков
у динамический, у нас про вектора даже ничего не написано в методичке.
Александр Русаков
мы ток начали, для меня не особо легкое
Александр Русаков
Спасибо огромное! А подскажите еще какой функцией удалить элементы, расположенные левее максимального?
Похожие вопросы
- ПРОШУ, ПОМОГИТЕ НАПИСАТЬ КОД C++
- Помогите написать код c++
- Помогите написать код C++ со строками
- Помогите написать код c++ со строками
- Помогите пожалуйста написать код.(C++)
- Помогите с кодом C++
- Написать код C++
- Прошу помогите написать код на c++, нужно сдать сегодня ?
- ПОМОГИТЕ С КОДОМ C++ .
- Помогите написать код с файлами C++