V
vivkin
в данном файле 1 задание сделала..но есть ошибки..а в чем причина их-не понимаю(
#include "stdio.h"
#include "iostream"
#include "string.h"
class String
{
private:
char * data;
int lenght;
public:
String (void);
String (char * x);
String (const String &r);
~String (void);
};
//создание пустой строки
String::String (void)
{
data =new char [1];
if (!data)
{
std::cout << "Ошибка выделения памяти";
exit (1);
}
*data = '\0';
lenght =0;
}
//конструктор символьного присваиния
String::String (char * x)
{
int i=0;
while (x!='\0')
i++;
lenght=i;
data =new char [lenght+1];
for (i=0; i<= lenght; i++)
data=x;
data[i+1]='\0';
}
//конструктор копирования
String::String (const String &r)
{
lenght = r.lenght;
int j=0;
for (int j=0; j<= lenght; j++)
data[j]=r.data[j];
data[lenght]='\0';
}
//деструктор
String::~String (void)
{
if (lenght!=NULL)
delete [] data;
}
//оператор присваивания
String::String (const String &r)
{
lenght=r.lenght;
data=new char[lenght+1];
for(int i=0; i<lenght; i++)
data=r.data;
data[lenght]='\0';
}
;
}
//оператор конкатинации
String& operator+=(const String &r)
{
char *u;
u=new char[lenght+1];
strcpy(u,data);
lenght = lenght + r.lenght;
delete data;
data=new char[lenght+1];
for (int i=0;i<lenght-r.lenght;i++)
data=u;
for (int i=0;i<r.lenght+1;i++)
data[lenght+i-r.lenght]=r.data;
delete []u;
return *this;
};
operator const char *() {
return data;
};
char operator[](const int pos) const{
return data[pos];
};
char& operator[](const int pos){
return data[pos];
};
friend String operator+(const String &r,const String &q );
};
String operator+(const String &r,const String &q )
{
int lenght = q.lenght + r.lenght;
char *dt=new char[lenght+1];
for (int i=0;i<r.lenght;i++)
dt=r.data;
for (int i=0;i<q.lenght+1;i++)
dt[r.lenght+i]=q.data;
String nw(dt);
delete []dt;
return nw;
};
int _tmain(int argc, _TCHAR* argv[]){
String a;
String b("qwer");
String t("tyuoiu");
String s(B);
String d=b;
// b+=t;
a=b+t;
const char *mass = a;
char q=a[3];
a[3]='6';
}
#include "stdio.h"
#include "iostream"
#include "string.h"
class String
{
private:
char * data;
int lenght;
public:
String (void);
String (char * x);
String (const String &r);
~String (void);
};
//создание пустой строки
String::String (void)
{
data =new char [1];
if (!data)
{
std::cout << "Ошибка выделения памяти";
exit (1);
}
*data = '\0';
lenght =0;
}
//конструктор символьного присваиния
String::String (char * x)
{
int i=0;
while (x!='\0')
i++;
lenght=i;
data =new char [lenght+1];
for (i=0; i<= lenght; i++)
data=x;
data[i+1]='\0';
}
//конструктор копирования
String::String (const String &r)
{
lenght = r.lenght;
int j=0;
for (int j=0; j<= lenght; j++)
data[j]=r.data[j];
data[lenght]='\0';
}
//деструктор
String::~String (void)
{
if (lenght!=NULL)
delete [] data;
}
//оператор присваивания
String::String (const String &r)
{
lenght=r.lenght;
data=new char[lenght+1];
for(int i=0; i<lenght; i++)
data=r.data;
data[lenght]='\0';
}
;
}
//оператор конкатинации
String& operator+=(const String &r)
{
char *u;
u=new char[lenght+1];
strcpy(u,data);
lenght = lenght + r.lenght;
delete data;
data=new char[lenght+1];
for (int i=0;i<lenght-r.lenght;i++)
data=u;
for (int i=0;i<r.lenght+1;i++)
data[lenght+i-r.lenght]=r.data;
delete []u;
return *this;
};
operator const char *() {
return data;
};
char operator[](const int pos) const{
return data[pos];
};
char& operator[](const int pos){
return data[pos];
};
friend String operator+(const String &r,const String &q );
};
String operator+(const String &r,const String &q )
{
int lenght = q.lenght + r.lenght;
char *dt=new char[lenght+1];
for (int i=0;i<r.lenght;i++)
dt=r.data;
for (int i=0;i<q.lenght+1;i++)
dt[r.lenght+i]=q.data;
String nw(dt);
delete []dt;
return nw;
};
int _tmain(int argc, _TCHAR* argv[]){
String a;
String b("qwer");
String t("tyuoiu");
String s(B);
String d=b;
// b+=t;
a=b+t;
const char *mass = a;
char q=a[3];
a[3]='6';
}