Николай Веселуха
Высший разум
(384921)
4 года назад
#include <iostream>
#include <cstring>
using namespace std;
class Array {
public:
Array(int len, int val = 0) : len(len), data(new int[len]) {
memset(data, val, len * sizeof(data[0]));
}
Array(const Array& a) : len(a.len), data(new int[len]) {
for (int i = 0; i < len; ++i) data[i] = a.data[i];
}
~Array() {
if (data != nullptr) {
delete[] data;
data = nullptr;
}
}
int length()const {
return len;
}
void reverse() {
for (int i = 0, j = len - 1; i < j; ++i, --j) {
swap(data[i], data[j]);
}
}
const int& operator[](int i)const {
if (i < 0) i = len - abs(i) % len;
else i = i % len;
return data[i];
}
private:
int len;
int* data;
friend ostream& operator<<(ostream& out, const Array& a) {
for (int i = 0; i < a.len; ++i) out << a.data[i] << ' ';
return out;
}
friend istream& operator>>(istream& inp, Array& a) {
for (int i = 0; i < a.len; ++i) inp >> a.data[i];
return inp;
}
};
int main() {
int n;
cin >> n;
Array a(n);
cin >> a;
a.reverse();
cout << a.length() << '\n' << a << endl;
system("pause > nul");
}
class Array {
int len; // Длина массива
int* data; // Дин. массив с числами
public:
Array(int len, int val = 0); // Создать массив длины len и заполнить его числом val
Array(const Array &); // Конструктор копирования массива
~Array();
int length(); // Метод для получения длины массива
void reverse(); // Перевернуть массив задом-наперед
// Операция вывода массива
friend ostream& operator << (ostream&, const Array&);
// Операция ввода массива
friend istream& operator >> (istream&, Array&);
};
С помощью полученного класса считайте массив с клавиатуры, переверните его и выведите задом-наперёд.
Формат входных данных
В первой строке с клавиатуры вводится целое число N (1 ≤ N ≤ 1 000).
Во второй строке через пробел вводятся N целых чисел, не превышающие по модулю 109, — элементы массива.
Формат выходных данных
Выведите перевёрнутый массив в том же формате, в котором он вводится.
входные данные
6
1 7 3 4 2 8
выходные данные
6
8 2 4 3 7 1