Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста с задачей на C++

noobinprogramming www Ученик (27), закрыт 4 года назад
Создайте класс «Массив», который будет хранить внутри себя массив целых чисел, корректно считываться с клавиатуры, копироваться, вводиться/выводиться и иметь операцию «переворот».

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
Лучший ответ
Николай Веселуха Высший разум (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");
}
Остальные ответы
Н Ж Ученик (170) 4 года назад
Обязательно на c? Просто на Питоне есть встроенная функция, вот код:
a=input().split()
a.reverse()
print(a)
Батаев ДмитрийПросветленный (23298) 4 года назад
есть для с++ полным полно АЛГОРИТМОВ от сортировки, до поиска и замены... И любой новый язык программирования так или иначе заимствует черты с или с++. А питон хорош под блендер, например
Н Ж Ученик (170) Батаев Дмитрий, не буду спорить просто я предложил решение человеку, его решение использовать или нет, а так вообще все идет из машинки :)
Похожие вопросы