учебные задачи-нужна помощь;)

Тема в разделе "Общие вопросы по С и С++", создана пользователем natalikonst, 22 май 2006.

Статус темы:
Закрыта.
  1. natalikonst

    natalikonst Гость

    Нужна помощь в решении нескольких заданий на С++, ОЧЕНЬ хочется разобраться, но пока самой не получается (практики совсем мало)....завтра надо сдавать:( Задания носят учебный характер, что может быть немного скучно. Помогите, кто чем может:eek:Заранее огромное спасибо!!!

    1). Создать класс "СТРОКА" (эта строка м.б. супер длинной - массив не м.б. определенной длины)
    создать несколько конструкторов:
    1. с формальным параметром
    2. с конкр.данными (строковое значение)
    методы изменения (заменить), получения строки (put, get)
    получение длины строки
    в i-тый элемент положить какое-то значение
    + получить какой-то элемент из строки
    функции:
    приведение либо к верхнему, либо к нижнему регистру
    перегрузка: операция сложения 2х строк
    перегр.оператора присваивания
    перегр.оператора [ ] - по i-тому значению получ. i-тый элемент строки

    2). (связано с вирт.функциями)Создать абстракт.класс:
    список и 2 дочерних класса:стек и очередь

    3). построить на основе шаблонов стек и очередь (символьн., целых, double)
     
  2. Гость

    class MyString {
    protected:
    char* _buffer;
    size_t _size;
    public:
    MyString() {_buffer = NULL;_size=0;}
    MyString(const char* Str=NULL)
    {
    _buffer = NULL;_size=0;
    if(Str != NULL)
    {_size=strlen(Str) + 1; _buffer = (char*)new char[_size]; assert(_buffer);strcpy(_buffer,Str); _buffer[_size-1]=0;}
    }
    ~MyString() {if(_buffer != NULL) delete[] _buffer; _buffer = NULL;_size=0;}

    size_t length() {return _size;}

    const char* get(){return _buffer;}
    const char* put(const char* Str=NULL){
    if(_buffer != NULL) delete[] _buffer;
    _buffer = NULL;_size=0;
    f(Str != NULL)
    {_size=strlen(Str) + 1; _buffer = (char*)new char[_size]; assert(_buffer);strcpy(_buffer,Str); _buffer[_size-1]=0;}
    }
    return _buffer;
    }

    char getAt(size_t i) {assert(_buffer); assert(!(i<_size)); return _buffer;}
    void setAt(size_t i,char S) {assert(_buffer); assert(!(i<_size)); _buffer = S;}

    const char* upper(){assert(_buffer); return strupr(_buffer);}
    const char* lower(){assert(_buffer); return strlwr(_buffer);}

    MyString& operator + (MyString& Str)
    {
    if(_buffer == NULL)
    put(Str._buffer);
    else if(Str._buffer != NULL){
    _size = _size + Str._size + 1;
    char* temp = (char*) new [_size];
    assert(temp);
    strcpy(temp,_buffer); strcat(temp,Str._buffer);
    delete[] _buffer;
    _buffer = temp;
    }
    return *this;
    }

    char operator [] (size_t i) {return getAt(i);}

    MyString& operator = (MyString& Str)
    {
    put(Str._buffer);
    return *this;
    }
    };


    ну эт так в кратце по первому заданию, я его не компилировал и писал прям тут, возможно будут опчепятки, но по идее должно работать.

    Да нужно еще заголовочные файлы подключить
    #include <string.h>
    #include <assert.h>
     
  3. natalikonst

    natalikonst Гость

    Ирокез, спасибо:)правда, сегодня на экзамене сама как-то сообразила...нав.,экстр.условия подействовали:))))Но я по-другому вроде сделала, так что твой вариант тоже почитаюB)Спасибо!!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей