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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 20:41   #1
Dead Romantic
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 32
Печаль Наследование C++

Задание: создать класс CCOMPLEX, производный от класса CSTROKA. Строки данного класса состоят из двух полей, разделенных символом i. Каждое из полей может содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы + и – могут находиться только в первой позиции числа. Определить методы: конструктор без параметров, конструктор, принимающий в виде параметра C-строку, конструктор копирования, деструктор. Примеры строк: +33i12, -7i100, +5i-21.

Есть сам класс CSTROKA, осталось сделать наследование...

Class.h (заголовочный файл):
Код:
class CSTROKA{
	char *s;
	int n;
public:
CSTROKA();
CSTROKA(char *x);
CSTROKA(CSTROKA &x);
int GetLen();
void Clear();
~CSTROKA();
void Print();
bool operator==(const CSTROKA &other);
operator char*();
CSTROKA * CSTROKA::operator + (const CSTROKA &other);
};
Class.cpp (файл с описанием конструкторов-деструкторов и методов):
Код:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include "Сlass.h"
#pragma hdrstop

CSTROKA::CSTROKA(){
n=14;
s=new char[n];
strcpy(s, "Default string");
}

CSTROKA::CSTROKA(char *x){
n=strlen(x);
s= new char [n];
if(s) strcpy(s,x);
else printf("Error");
}

CSTROKA::CSTROKA(CSTROKA &x){
n=x.n;
if (s) delete s;
s=new char[n];
if (s) strcpy(s,x.s); else printf("Error");
}

int CSTROKA::GetLen(){return n;}

void CSTROKA::Clear(){
  n=0;
  delete []s;
  s = 0;
  }

CSTROKA::~CSTROKA(){if (n!=0) delete []s;}

void CSTROKA::Print(){puts(s);}

bool CSTROKA::operator==(const CSTROKA &other){
if (n!=other.n) return false;
else
for (int i = 0; i < n; i++) if (s[i]!=other.s[i]) return false;
return true;
}

CSTROKA::operator char*(){
char *p=new char[n];
strcpy(p,s);
return p;
}

CSTROKA * CSTROKA::operator + (const CSTROKA &other){
n=n+other.n;
realloc(s,n);
strcat(s,other.s);
return this;
}
File1.cpp (файл самой программы):
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include "Class.h"
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
	cout<<"Konstruktor bez parametrov: ";
	CSTROKA s1;
	s1.Print();
	cout<<"Konstruktor s parametrom: "<<endl<<"Vvedite stroku: ";
	char *a=new char[80];
	scanf("%s", a);
	CSTROKA s2(a);
	s2.Print();
	cout<<"Konstruktor kopirovaniya: "<<endl;
	CSTROKA s3(s2);
	s3.Print();

   	cout<<"Poluchtnie dliny stroki: "<<s3.GetLen()<<endl;
   	cout<<"Ochistka stroki. "; s3.Clear();
   	cout<<"Teper' eyo dlina: "<<s3.GetLen();
	cout<<endl<<"Vvedite escho odnu stroku: ";
	fflush(stdin);
	gets(a);

	CSTROKA s4(a);
	cout<<"Sravnenie strok: ";
	if (s2==s4) cout<<"stroki odinakovie";
	else cout<<"stroki raznie";
	cout<<endl<<"Privedenie tipa: ";
	a=(char*)s4;
	puts(a);
	cout<<"Slogenie strok: ";
	s2+s4;
	s2.Print();
	getch();
	return 0;
}
//---------------------------------------------------------------------------
Dead Romantic вне форума Ответить с цитированием
Старый 29.05.2011, 13:30   #2
Dead Romantic
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 32
По умолчанию

Граждане программисты! Выражаю вам нулевую благодарность за вашу нулевую помощь мне третий раз подряд. Знания и альтруизм у вас, как видно, закончился. Спасибо за ничего.
Dead Romantic вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование в С++ 3AKPbIBAKA Помощь студентам 3 24.11.2010 16:38
Наследование notHaker Общие вопросы Delphi 5 24.05.2010 18:55
Наследование Yulia13666 Общие вопросы по Java, Java SE, Kotlin 8 09.05.2010 11:39
Наследование beregok Общие вопросы C/C++ 1 04.07.2009 22:39
Наследование z3rg Общие вопросы C/C++ 9 30.04.2009 20:43