Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Шаблоны классов  
V
    Опции темы
LipaNia
  Дата 17.11.2007, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.11.2007

Репутация: нет
Всего: нет



[C++]

Дано: число N и последовательность a1, a2, … aN

Создать шаблон класса, порождающего динамические одномерные массивы с элементами различных типов (вещественные, целочисленные, символьные и т.д.). Тип данных и результат являются параметрами по отношению к классу. программа должна иметь методы инициализации, конструктор, деструктор, просмотра значений созданного массива, а также для решения задачb формирования нового массива по следующим алгоритмам:

a1, -a1*a2, +a1*a2*a3, … ,(-1)N*a1*a2*…aN 

 smile  smile  smile 

 smile   

ЗАРАНЕЕ БЛАГОДАРЕН !!!


Это сообщение отредактировал(а) LipaNia - 18.11.2007, 13:07
PM MAIL   Вверх
zkv
Дата 17.11.2007, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 21
Всего: 92




M
zkv
LipaNia, оформляйте темы в соответствии с правилами.

PM MAIL   Вверх
LipaNia
  Дата 18.11.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.11.2007

Репутация: нет
Всего: нет



Спасибо за замечание!  smile 
PM MAIL   Вверх
Oleg_Ci
Дата 19.11.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Накалякал.
Код

#include <iostream>
#include <clocale>
using namespace std;

////////////////// class //////////////////////////////////////////
template <typename type>
class MyArray{
public:
    type *m_Mas;
    int m_Size;
    MyArray():m_Mas(), m_Size(0){;}
    MyArray( int size, type begin = type());
    MyArray( const MyArray & ar );
    template <typename T>MyArray<type> & operator=( const MyArray<T> & ar );
    ~MyArray();
    type & operator[]( int pos ); // изменение значений массива
    void ReSize( int size, type data =0 ); // изменение размера массива
    void Display(); // вывод значений массива на консоль
    void Function(); // формирования нового массива по следующим алгоритмам (сам сделаешь)
};
///////////////////// function ///////////////////////////////////
template <typename type>MyArray<type>::MyArray( int size, type begin ): m_Size(size){
    m_Mas = new type[size];
    for( int i=0; i<size; ++i )
        *( m_Mas + i ) = begin;
}
template <typename type> MyArray<type>::~MyArray(){
    if( m_Mas != NULL )
        delete [] m_Mas;
}
template <typename type>MyArray<type>::MyArray( const MyArray<type> & ar ):m_Size(ar.m_Size){
    if( ar.m_Mas == NULL ) m_Mas = NULL;
    else{
        m_Mas = new type[m_Size];
        for( int i=0; i<m_Size; ++i ) // копируем массив
            m_Mas[i] = ar.m_Mas[i];
    }
}
template <typename type> template <typename T>
MyArray<type> & MyArray<type>::operator=(const MyArray<T> & ar ){
    if((void*)this == (void*)&ar ) return *this;
    if( m_Mas != NULL ){ // если массив не пуст
        delete [] m_Mas;
        m_Mas = NULL;
        m_Size = 0;
    }
    if( ar.m_Mas != NULL ){ 
        m_Size = ar.m_Size;
        m_Mas = new type[m_Size];
        for( int i=0; i<m_Size; ++i ) // копируем массив
            m_Mas[i] = ar.m_Mas[i];
    }
    return *this;
}
template <typename type> type & MyArray<type>::operator[](int pos){
    return m_Mas[pos];
}
template <typename type> void MyArray<type>::ReSize( int size, type data ){
    type *mas = m_Mas;

    if( size == 0 ){
        m_Mas = NULL;
        m_Size = 0;
    }
    else{
        m_Mas = new type[size];
        for( int i=0; i<size; ++i )
            if( i<((size<m_Size)?size:m_Size))
                m_Mas[i] = mas[i];
            else 
                m_Mas[i] = data;
            m_Size = size;
    }
    if( mas != NULL )
        delete [] mas;
}
template <typename type> void MyArray<type>::Display(){
    for( int i=0; i<m_Size; ++i )
        cout << "Array[" << i << "] = " << m_Mas[i] << "\n";
}
//////////////////// Main ////////////////////////////////////////
int main(){
    setlocale(LC_CTYPE, "Russian");
    
    cout << "Массив первый :\n";
    MyArray<int> ar(10,2); // создали один массив в 10 элементов со значением =2
    ar[3] = 100; // присвоили 
    ar[7] = 777;
    ar.Display(); // вывод значений

    cout << "\n\nМассив второй :\n";
    MyArray<float> ar2; // создали пустой второй массив
    ar2 = ar; // скопировали значения из первого
    ar2[1] = 11.111; 
    ar2.ReSize(20); // изменили размер
    ar2.Display();

    cin.sync();
    cout << "\n\nНажмите Enter для выхода.\n\n";
    getchar(); // пауза
    return 0;
}
////////////////// End main /////////////////////////


PM MAIL   Вверх
LipaNia
Дата 20.11.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.11.2007

Репутация: нет
Всего: нет



Спасибо! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.