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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2013, 19:57   #1
Laurensii
 
Регистрация: 24.12.2012
Сообщений: 3
По умолчанию работа со строками, помогите найти ошибку

Код:
#include <iostream>
#include <cstring>
using namespace std;
class str{
    char *a;
    int n;
public:
    str();
    str(int k);
    str(const str &z);
    ~str();
    str operator =(const str &p);
    str operator +(str z);
    void in();
    void out();
    void del(int k);
    int sr(str z);
};
str str:: operator=(const str &p){
    if(this!=&p){
        delete[]a;
        n=p.n;
    a=new char[p.n];
    for(int i=0;i<p.n;++i)
        a[i]=p.a[i];
    }
    return *this;
}
str::str(int k){
    n=k;
a=new char[n];
for(int i=0;i<n;++i)
    a[i]=1;
}
str::str(const str &z){
    n=z.n;
    a=new char[n];
    for(int i=0; i<n;++i)
        a[i]=z.a[i];
}
str::~str(){
    for(int i=0;i<n;++i){
        a[i]=0;
    }
    delete[]a;
    a=0;
    n=0;
}
void str::in(){
    char str[512];
    cin.getline(str,512);
    delete [] a;
    n=strlen(str);
    a=new char[n];
    memcpy(a,str,n);
	
}
void str::out(){
    int i,j;
    for(i=0;a[i]!=1;++i){}
    for(j=0;j<i;++j)
        cout<<a[j];
}
 void str::del(int k){
    int i=k-1;
    for(i;i<n-1;++i)
        a[i]=a[i+1];
 }
 str str::operator + ( str z){
    str c(n+z.n);
    int i,j,q;
	for(i=0;a[i]!=1;++i);
	for(j=0;z.a[j]!=1;++j);
	for(q=0;q<i;++q){
		c.a[q]=a[q];
	}
	for(q=0,i;q<j;++q,++i){
		c.a[i]=z.a[q];
	}
    
    return c;}
 
 int str::sr(str z){
     return strcmp(a,z.a);
 }
 void main(){
     str c, b;
     int k, p;
     b.in();
     c=b+b;
     b.out();
     cout<<endl;
     c.out();
     cout<<endl;
     cout<<"nomer- ";
     cin>>k;
     b.del(k);
     b.out();
     cout<<endl;
     p=b.sr(c);
     if(p)
         cout<<"false"<<endl;
     else
         cout<<"true"<<endl;
     system("pause");
}

Последний раз редактировалось Laurensii; 24.09.2013 в 20:03.
Laurensii вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку (работа со строками) prem1era Общие вопросы C/C++ 3 27.04.2011 18:43
Работа со строками. Написал программній код, но где-то допустил ошибку. NikitaNikita Помощь студентам 2 07.02.2011 16:32
Курсовая работа на тему крестики-нолики. Помогите разобраться и найти ошибку. vanzer Паскаль, Turbo Pascal, PascalABC.NET 0 02.05.2009 21:16
Работа с TreeView. Помогите найти ошибку. AlDelta Компоненты Delphi 2 20.07.2007 12:31