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

ЗАдача по языку программирования C++

Егор Кулаков Знаток (302), открыт 1 неделю назад
Заданы: число N и последовательность (a_1×a_1), (a_1×a_2), ... , (a_1×a_n).
Создать шаблон класса, порождающего динамические одномерные
массивы с элементами различных типов (вещественњые, целочисленные,
символьные и т.д)
Тип, данных результат ЯЯЛЯЮТСЯ параметрами по отношению к классу.
Программа должна содержать: конструктор, деструкгор, метод просмотра
значений созданното массива, а также метод для решения задач формирования
нового массива. На C++
2 ответа
Илья Петров Знаток (348) 1 неделю назад
#include <iostream>

// Общий шаблон класса для динамических массивов
template<typename T>
class DynamicArray {
private:
T * data; // Указатель на данные массива
int size; // Размер массива

public:
// Конструктор по умолчанию
DynamicArray() : data(nullptr), size(0) {}

// Конструктор с инициализацией размера массива
DynamicArray(int n) : data(new T[n]), size(n) {}

// Деструктор для освобождения памяти
~DynamicArray() {
delete[] data;
}

// Метод для просмотра значений массива
void print() const {
for (int i = 0; i < size; ++i) {
std::cout << data[i] << " ";
}
std::cout << std::endl;
}

// Метод для формирования нового массива
void formNewArray(T value) {
for (int i = 0; i < size; ++i) {
data[i] = value;
}
}
};

int main() {
// Использование шаблона класса для разных типов данных
DynamicArray<int> intArray(5); // Динамический массив целых чисел
DynamicArray<double> doubleArray(5); // Динамический массив вещественных чисел
DynamicArray<char> charArray(5); // Динамический массив символов

// Заполнение массивов и их просмотр
intArray.formNewArray(42);
intArray.print();

doubleArray.formNewArray(3.14);
doubleArray.print();

charArray.formNewArray('A');
charArray.print();

return 0;
}
Егор КулаковЗнаток (302) 1 неделю назад
С GPT и я могу, а вот свои поправки в коде не каждый может сделать... Палит нейронка, т к давно уже не пишут "std::"
ChatGPT-4 Turbo Гуру (3260) Егор Кулаков, хсахахха чел у него максимкм сраный GPT-3 раз он пишет с std
ChatGPT-4 Turbo Гуру (3260) 1 неделю назад
Хз, правильно или нет, но это хотя б ориг ChatGPT 4 (с подпиской)


Для создания класса шаблона в C++, который может управлять динамическими массивами различных типов данных, вам необходимо использовать шаблоны (template) и параметры шаблона. Вот как может выглядеть код на C++ для описанной задачи:

#include <iostream>

using namespace std;

template<typename T>
class DynamicArray {
private:
T* array;
size_t size;

public:
// Конструктор
DynamicArray(size_t n) : size(n) {
array = new T[size];
}

// Деструктор
~DynamicArray() {
delete[] array;
}

// Метод просмотра значений массива
void Display() const {
for(size_t i = 0; i < size; ++i) {
cout << array[i] << " ";
}
cout << endl;
}

// Метод для заполнения массива значениями (a_i * a_i)
void FillWithMultiplication(const T& a) {
for(size_t i = 0; i < size; ++i) {
array[i] = a * (i + 1); // Пример расчёта, можно изменить под нужную задачу.
}
}

// Геттер для размера массива
size_t GetSize() const {
return size;
}

// Доступ к элементам массива
T& operator[] (size_t index) {
if (index >= size) throw out_of_range("Index out of range");
return array[index];
}

// Константный доступ к элементам массива
const T& operator[] (size_t index) const {
if (index >= size) throw out_of_range("Index out of range");
return array[index];
}
};

int main() {
// Создание инстанции класса шаблона для целочисленного массива
DynamicArray<int> intArray(5);
intArray.FillWithMultiplication(2);
intArray.Display();

// Создание инстанции класса шаблона для вещественного массива
DynamicArray<double> doubleArray(5);
doubleArray.FillWithMultiplication(2.5);
doubleArray.Display();

return 0;
}


Обратите внимание, что у вас просили создать метод для решения конкретной задачи формирования нового массива по правилу (a_1×a_1), (a_1×a_2), ... , (a_1×a_n), но детали этого не указаны, так что в методе FillWithMultiplication я заполнил массив в соответствии с предположением, что данное a умножается на индекс каждого элемента (начиная с 1).

Если ваши требования отличаются, вам потребуется соответствующим образом изменить логику методов.
Похожие вопросы