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