Реализация Класса Строка С++

Тема в разделе "C/C++/C#", создана пользователем kidsporno, 7 янв 2012.

  1. kidsporno

    kidsporno Гость

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

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

    пробовал делать сам ... скука жуткая в ооп совсем не понимаю ...
    вот должно выглядеть примерно так:
    Код (C++):
    #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;
    }
     
  2. kidsporno

    kidsporno Гость

    вообщем сделано спасибо "всем"
     
  3. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    никто не помог что-ли?
     
Загрузка...

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