Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: учебные задачи-нужна помощь;)
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
natalikonst
Нужна помощь в решении нескольких заданий на С++, ОЧЕНЬ хочется разобраться, но пока самой не получается (практики совсем мало)....завтра надо сдаватьsad.gif Задания носят учебный характер, что может быть немного скучно. Помогите, кто чем можетsmile.gifЗаранее огромное спасибо!!!

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

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

3). построить на основе шаблонов стек и очередь (символьн., целых, double)
Ирокез
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[i];}
void setAt(size_t i,char S) {assert(_buffer); assert(!(i<_size)); _buffer[i] = 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>
natalikonst
Ирокез, спасибоsmile.gifправда, сегодня на экзамене сама как-то сообразила...нав.,экстр.условия подействовалиsmile.gif)))Но я по-другому вроде сделала, так что твой вариант тоже почитаюwink.gifСпасибо!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.