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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2015, 20:13   #1
polant
 
Регистрация: 07.01.2015
Сообщений: 8
По умолчанию Создать конструкторы для класса

Уважаемые форумчане! Нужна помощь с реализацией конструкторов для класса в C#. Заранее спасибо за любую помощь!
Задан класс:
Код:
class MString
{
    char[] chars;
}
(здесь поле char[] chars обязательно не открытое)
Добавить конструктор, создающий объект из участка обычной строки, с тремя параметрами:
исходная строка, начальный индекс, конечный индекс (конечный индекс на единицу больше, чем индекс последнего символа).
MString(string ms, int start, int finish). Два последних параметра не обязательны.
Добавить аналогичный конструктор, создающий объект из участка MString.

первый конструктор:
Код:
public MString(string ms, int start, int finish)
{
}
второй конструктор:
Код:
public MString(MString ms, int start, int finish) 
{
}

Последний раз редактировалось polant; 09.01.2015 в 14:23.
polant вне форума Ответить с цитированием
Старый 08.01.2015, 20:19   #2
polant
 
Регистрация: 07.01.2015
Сообщений: 8
По умолчанию

Первый конструктор написал так, а второй не получается написать
Код:
public MString(string ms, int start = 0, int finish = int.MaxValue)
{
    chars = ms.ToCharArray();
    char[] c = new char[ms.Length];
    Array.Copy(chars, c, finish - start);
    chars = c;
}
если это неправильно, подскажите пожалуйста как исправить

Последний раз редактировалось polant; 08.01.2015 в 20:30.
polant вне форума Ответить с цитированием
Старый 08.01.2015, 21:59   #3
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Пишу с коленки - возможны ошибки ( если что - поправят )!
Насколько я понял из задания
Цитата:
Добавить конструктор, создающий объект из участка обычной строки, с тремя параметрами:
исходная строка, начальный индекс, конечный индекс (конечный индекс на единицу больше, чем индекс последнего символа).
Реализция:
Код:
MString::MString(string ms, int start, int finish){
    for ( int i = start; i < finish; i++ ){
        char[i] = ms[i];        
    }
}
Это если мы под массив, к примеру, выделили 10 элементов( char chars[10] )
Насчет второго конструктора самому интересно))
igoreshka3333 вне форума Ответить с цитированием
Старый 08.01.2015, 22:39   #4
polant
 
Регистрация: 07.01.2015
Сообщений: 8
По умолчанию

2-й конструктор интересный, но похоже, что с ним как раз и беда у меня. Все равно спасибо!
polant вне форума Ответить с цитированием
Старый 08.01.2015, 23:46   #5
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Ну вот реализовал второй конструктор на примере))
Если что не ясно - спрашивай!
Код:
#include <iostream>
#include <string>
using namespace std;

class MString
{
    char* ch;

public:
    MString ( string str, int start, int finish );
    MString ( MString ms, int start, int finish );
    void display();
};

int main()
{
    string str = "Abracadabra";
    MString firstStr ( str, 0, 5 );
    MString secondStr ( firstStr, 0, 3 );
    cout << "First object: ";
    firstStr.display();
    cout << "Second object: ";
    secondStr.display();

}

MString::MString ( string ms, int start, int finish ){
    ch = new char[finish];
    for( int j = 0; j < finish - start; j++ )
        ch[j] = ms[j];

}

MString::MString ( MString ms, int start, int finish ){
    ch = new char[finish];
    for ( int j = 0; j < finish - start; j++ )
        ch[j] = ms.ch[j];

}

void MString::display(){
    cout << ch << endl;
}

Последний раз редактировалось igoreshka3333; 08.01.2015 в 23:48.
igoreshka3333 вне форума Ответить с цитированием
Старый 09.01.2015, 14:26   #6
polant
 
Регистрация: 07.01.2015
Сообщений: 8
По умолчанию

Спасибо! Я понял Вашу идею. Так же писать пробовал, но надо как-то по-другому - это не совсем правильно, к сожалению не знаю как именно надо. Еще я язык забыл уточнить - это надо на шарпе написать, хотя здесь тоже по коду все понятно.
polant вне форума Ответить с цитированием
Старый 11.01.2015, 18:14   #7
polant
 
Регистрация: 07.01.2015
Сообщений: 8
По умолчанию

Вот такое решение вышло:
Код:
    class MString
    {
        char[] chars;

        public char[] Chars
        {
            get { return chars; }
            set { chars = value; }
        }

        public MString(string ms, int start = 0, int finish = int.MaxValue)
        {
            if (finish == int.MaxValue)
            {
                finish = ms.Length;
            }
            char[] ch = ms.ToCharArray();
            int length = finish - start;
            chars = new char[length];
            Array.Copy(ch, start, chars, 0, finish - start);
        }


        public MString(MString ms, int start = 0, int finish = int.MaxValue)
        {
            if (finish == int.MaxValue)
            {
                finish = ms.Chars.Length;
            }
            int length = finish - start;
            chars = new char[length];
            Array.Copy(ms.Chars, start, chars, 0, length);
        }
    }
polant вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо создать класс, содержащий по возможности все его виды элементов: поля, конструкторы, свойства TGOD C# (си шарп) 8 13.10.2014 19:43
Как создать метод класса, возвращающий объекты (поля класса) разных типов frosich Общие вопросы Delphi 3 01.03.2013 19:29
Создать конструкторы, деструкторы базового и производных классов (визуальное програмирование) zvir Помощь студентам 0 01.12.2011 22:09
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
Конструкторы класса и двунаправленный список (*_*) Общие вопросы C/C++ 2 29.04.2009 18:17