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

  • Автор темы natalikonst
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

natalikonst

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

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

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

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

Guest

#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>
 
N

natalikonst

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