Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2012, 19:51   #1
kidsporno
Новичок
Джуниор
 
Регистрация: 07.01.2012
Сообщений: 2
По умолчанию реализация класса строка С++

Доброго времени суток всем просматривающим эту тему ...
всем знающим ооп на С++ предлагаю решить задачу ... естественно за вознаграждение обращаться ( icq-2267144) цена договорная

Собственно Задание: реализовать класс строка с динамическим кол-вом эел-тов, требования:
1) возврат подстроки (вывести элементы из строки например с 3 по 5)
2) изменить размер строки путем добавления в конец пустых символов
3) вставить подстроку в строку после определенного символа (символ определяется номером)
среда проверки Borland 3.1

пробовал делать сам ... скука жуткая в ооп совсем не понимаю ...
вот должно выглядеть примерно так:
Код:
#include <iostream.h>
#include <cstring.h>

class String
{
private:
char* S;
size_t len;
public:
String();
String(const char *s);
String(const String &s);
~String(){ delete [] S;}

istream& operator>>(istream&, String&); // Функция реализует ввод объектов класса с клавиатуры
ostream& operator<<(ostream&, const String&); // Функция реализует вывод объектов класса на экран
char& operator[] (int index) const
{
if (index < 0 || index >= len)
{
cout << "Выход за рамки." << endl;
exit(1);
}
return S[index];
}
size_t GetLen() // Функция возвращает длину строки
{
return len;
}
void SubStr (int x, int c) // вывод произвольной подстроки
{
// ????????????
}
void Rec (int i, char a) // Запись подствроки в строку
{
// ????????????
}
void Space (int n) // Добавление пустых символов
{
// ????????????
}
bool Empty ()
{
if (len != 0)
{
cout << "Строка не пустая" << endl;
return true;
}
else
{
cout << "Строка пустая" << endl;
return false;
}
}

};


istream& operator>>(istream& is, String& str)
{
const int N = 65536;
char temp[N] = {0};// Временный массив для многострочного ввода
size_t Length = 0, //длина последней введенной строки,
Total = 0; //общая длина ввода;
do // ввод продолжается до ввода пустой строки
{
is.getline(temp + Total, N - Total); // запрашиваем строку
Length = strlen(temp + Total);// замеряем длину введенной строки
if(Length == 0) // если строка пуста
{
break;
}
Total += Length + 1 ; // увеличиваем общую длину 1 - это \n
temp[Total - 1] = '\n';
} while (Total < N);
temp[Total - 1] = 0; // Убираем последний Enter
str = temp;// вызываем конструктор преобразования и перегруженный оператор присваивания
return is;
}


ostream& operator<<(ostream& os, const String& str)
{
os << str.S; // Вывод строки
return os; // Возврат объекта вывода
}


int main()
{
setlocale (LC_ALL, "Rus");
int UserChoise, n, z;
char x;
String a, b, c;
cout << "Введите строку: ";
cin >> a;
do
{
cout << endl;
cout << " Меню" << endl;
cout << "==========================================" << endl;
cout << " [1] Чтение подстроки" << endl;
cout << " [2] Добавление пустых символов" << endl;
cout << " [3] Вставка подстроки в строку" << endl;
cout << " [4] Выход" << endl;
cout << "==========================================" << endl;
cout << endl;
cout << "Ваш выбор : ";
cin >> UserChoise;
cout << endl;
switch (UserChoise)
{

case 1:
cout << "Введите индекс первого элемента: ";
cin >> z;
cout << "Введите кол-во символов: ";
cin >> n;
c.SubStr(z, n);
cout << endl;
break;
case 2:
cout << "Введите кол-во пустых символов: ";
cin >> n;
c.Space(n);
cout << endl;
break;

case 3:
cout << "Введите индекс элемента после которого осуществлять вставку: ";
cin >> z;
cout << "Введите подстроку: ";
cin >> b;
c.SubStr(z, n);
cout << endl;
break;

case 4:
cout << "ПОКА !!!!" << endl;
break;

default:
cout << endl << "Неправильный выбор! Попробуйте снова." << endl;
}

} while (UserChoise != 4);

return 0;
}

Последний раз редактировалось kidsporno; 07.01.2012 в 19:56.
kidsporno вне форума Ответить с цитированием
Старый 09.01.2012, 00:16   #2
kidsporno
Новичок
Джуниор
 
Регистрация: 07.01.2012
Сообщений: 2
По умолчанию

вообщем сделано спасибо "всем"
kidsporno вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация класса Список TEHb C# (си шарп) 1 03.01.2012 04:55
Реализация класса в Embarcadero C++ Builder Vanta11a C++ Builder 0 10.11.2011 14:15
Реализация класса Koketka Общие вопросы C/C++ 1 30.03.2011 02:25
Реализация класса по типу STL Mongrell Общие вопросы C/C++ 0 17.11.2010 20:56
Реализация класса на С++ danekne Помощь студентам 5 14.01.2010 18:32