1

Тема: Задача з класами

Створити клас – рядок символів. У закритій частині описати вказівник на символьний тип (на початок рядка). Визначити конструктор, деструктор, функції введення та виведення елементів рядка, обчислення довжини рядка.
Що получилось? Поможіть будь-ласка доповнити....або виправити..

#include <iostream>
#include <string>
using namespace std;
class string
{
public:
    int leng;
    char*text;
void length()
    {
    
    }
int string::length(char*t)
{
strcpy(text,t);
int i=0;
    while(text[i])i++;
    leng=i;
}
~string()
{}
//метод доступу 
void zmint(char*t)
{
    int n;
for (int i=0; i<n; i++)
    text[i]=t[i];
}
void chutt(char*t)
{
    int n;
for (int i=0; i<n; i++)
    t[i]=text[i];
}

};

int main()
{
    string st
        ("gfghjfghgf")
cout<<st.chutt <<endl;
system("PAUSE");
}

2

Re: Задача з класами

1. Питання задавайте конкретні. Не "допоможіть доповнити", а що саме ви вважаєте проблемою. Бо доповнити можна що завгодно.
2.

#include <string>
using namespace std;
class string

facepalm.jpg
Якщо вам треба описати рядок, то хоч би стандартний std::string не використовували...
3. Кому сказано "в закритій"?
4. Замість zmint краще б визначили operator=.
5. Для рядків дуже бажано визначати operator [] і функції вставлення рядка в певне місце і видалення шматка з рядка, на кшталт std::string::insert і std::string::erase.

3

Re: Задача з класами

@LeoDevel

На тему "велосипедного класу String" почитайте Шилдта: у нього реалізований приклад прямо у книзі.

4

Re: Задача з класами

Я б все ж радив робити самостійно. Взяти приклад АТД (до речі, чудовий приклад - це std::complex), а потім робити самому. Бо якщо списати - не розберетеся, нащо воно так чи інакше робиться.

5

Re: Задача з класами

#include <iostream>
#include <string>

using namespace std;

class my_string {
    char* text; // the string itself
    size_t size; // the length of string
public:
    my_string(string str = "") : size(str.length()) {
        text = new char[size];
        for (size_t i = 0; i < size; i++) {
            text[i] = str[i];
        }
    }
    ~my_string() {}

    size_t length() { return size; }

    friend istream& operator>>(istream&, my_string&); // input
    friend ostream& operator<<(ostream&, my_string&); // output

    void operator=(string str) {
        my_string newS(str);
        *this = newS;
    }
};

istream& operator>>(istream& in, my_string& str) {
    string buf;
    getline(in, buf);
    str = buf;
    return in;
}
ostream& operator<<(ostream& out, my_string& str) {
    for (size_t i = 0; i < str.size; i++) {
        out << str.text[i];
    }
    return out;
}

int main() {
    /*...*/
    return 0;
}

6

Re: Задача з класами

Дякую за допомогу...