Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Code lớp String có lỗi lạ, mong mọi người giúp debug với

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    4

    Mặc định Code lớp String có lỗi lạ, mong mọi người giúp debug với



    em cài đặt xong và viết xong hàm main lun gòi, nhưng mà cứ chạy là báo lỗi này.nếu mà bỏ phần ghép chuỗi đi thì chạy bt, nhưng đc 1 tí thì báo lỗi này



    vẫn biết là do thiếu chuỗi ghép nên mấy hàm sau ko hoạt động, nhưng mà báo lỗi này thì lạ wa', ko biết có phải do HDH bị lỗi ko nữa

    em gởi code cả bài, vì có khi bị l64i dây chuyền, mong mọi người chỉ giáo

    đây là phần cài đặt
    PHP Code:
    #include "DoAn.h"
    #include <iostream>
    using namespace std;

    MyString::MyString()
    {
        
    p_cString = new char[0];
        
    m_iStringLength 0;
    }
    MyString::MyString(const MyString &p)
    {
        
    p_cString = new char[p.m_iStringLength];
        for (
    int i=0;i<p.m_iStringLength;i++)
        {
            
    p_cString[i] = p.p_cString[i];
        }
        
    m_iStringLength p.m_iStringLength;

    }
    MyString::MyString(char *p)
    {    
        
    int d=0;
        for (
    int i=0;p[i]!='\0';i++)
        {    
            
    d++;

        }
        
    p_cString = new char[d];
        for (
    int i=0;i<=d;i++)
        {
            
    p_cString[i] = p[i];
        }
        
    m_iStringLength d;
    }
    MyString::MyString(char a,int n)
    {
        
    m_iStringLength n;
        
    p_cString = new char[n];
        for (
    int i=0;i<n;i++)
        {
            
    p_cString[i] = a;
        }

    }
    MyString::~MyString()
    {
        
    delete p_cString;
    }
    bool MyString::operator == (MyString p)
    {
        if (
    m_iStringLength != p.m_iStringLength)
            return 
    0;
        for(
    int i=0;i<m_iStringLength;i++)
        {
            if (
    p_cString[i]!=p.p_cString[i])
                return 
    0;
        }
        return 
    1;

    }
    bool MyString::operator == (char *p)
    {
        
    int d=0;
        for (
    int i=0;p[i]!='\0';i++)
        {    
            
    d++;

        }
        if (
    m_iStringLength != d)
            return 
    0;
        for(
    int i=0;i<m_iStringLength;i++)
        {
            if (
    p_cString[i]!=p[i])
                return 
    0;
        }
        return 
    1;
    }
    bool MyString::operator < (MyString p)
    {
        for(
    int i=0;i<(m_iStringLength>p.m_iStringLength?m_iStringLength:p.m_iStringLength);i++)
        {
            if (
    p_cString[i]<p.p_cString[i])
                return 
    1;
        }
        return 
    0;

    }
    bool MyString::operator < (char *p)
    {
        
    int d=0;
        for (
    int i=0;p[i]!='\0';i++)
        {    
            
    d++;

        }
        for(
    int i=0;i<(m_iStringLength>d?m_iStringLength:d);i++)
        {
            if (
    p_cString[i]<p[i])
                return 
    1;
        }
        return 
    0;
    }
    bool MyString::operator > (MyString p)
    {
        for(
    int i=0;i<(m_iStringLength>p.m_iStringLength?m_iStringLength:p.m_iStringLength);i++)
        {
            if (
    p_cString[i]>p.p_cString[i])
                return 
    1;
        }
        return 
    0;

    }
    bool MyString::operator > (char *p)
    {
        
    int d=0;
        for (
    int i=0;p[i]!='\0';i++)
        {    
            
    d++;

        }
        for(
    int i=0;i<(m_iStringLength>d?m_iStringLength:d);i++)
        {
            if (
    p_cString[i]<p[i])
                return 
    1;
        }
        return 
    0;
    }
    MyString MyString::operator +(const MyString &p)
    {
        
    int i;
       
        
    charnewString = new char[m_iStringLength p.m_iStringLength 1];

        for (
    i=0;m_iStringLength; ++i)
            
    newString[i] = p_cString[i];


        for (
    int j=p.m_iStringLength;++j, ++i)
            
    newString[i] = p.p_cString[j];

     
        
    newString[i] = '\0';
        return 
    newString;
    }
    unsigned strlenchar const* )
    {
    int count 0;
    for(; *
    != '\0'; ++)
    count++;
    return 
    count;
    }

    charMyString::operator + (char p)
    {

        
    charnewChar = new char[m_iStringLength strlen(p) + 1];
        
    int i;

        
        for (
    int i 0;m_iStringLength; ++i)
            
    newChar[i] = p_cString[i];


        for (
    int jstrlen(p);++j, ++i)
            
    newChar[i] = p[j];


        
    newChar[i] ='\0';

        return 
    newChar;
    }
    void MyString::operator += (MyString p)
    {
        for(
    int i=0;i<p.m_iStringLength;i++)
        {
            
    p_cString[i+m_iStringLength]=p.p_cString[i];
        }
        
    m_iStringLength=m_iStringLength+p.m_iStringLength;
        
    }
    void MyString::operator += (char *p)
    {
        
    int d=0;
        for(
    int i=0;p_cString[i]!='\0';i++)
        {
            
            
    d++;
        }
        for(
    int j=0;p[j]!='\0';j++)
        {
            
    p_cString[j+d]=p[j];
        }
        
    }
    char MyString::operator [] (int i)
    {
        return 
    p_cString[i];
    }
    void MyString::operator = (MyString p)
    {
        
        
    p_cString = new char[p.m_iStringLength];
        for (
    int i=0;i<p.m_iStringLength;i++)
        {
            
    p_cString[i] = p.p_cString[i];
        }
        
    m_iStringLength p.m_iStringLength;



    }
    void MyString::operator = (char *p)
    {
        
    int d=0;
        for(
    int i=0;p[i]!='\0';i++)
        {
            
    p_cString[i]=p[i];
            
    d++;
        }
        
    p_cString[d+1]='\0';
    }

    int MyString::GetLength()
    {
        if(
    m_iStringLength-1<0)
            return 
    0;
        return 
    m_iStringLength-1;
    }
    int MyString::IsEmpty ()
    {
        if(
    this->m_iStringLength==0)
            return 
    1;
        return 
    0;

    }
    void  MyString::Empty ()
    {
        
    m_iStringLength=0;
    }
    char MyString::GetAt (int viTri)
    {
        if(
    viTri>m_iStringLength)
        {
            
    cout<<"vuot qua gioi han cua chuoi";
        }
        else
        return 
    p_cString[viTri];

    }
    void MyString::SetAt (int viTri,char kiTu)
    {
        if(
    viTri>m_iStringLength)
        {
            
    cout<<"vuot qua gioi han cua chuoi";
        }
        else
        
    p_cString[viTri]=kiTu;
    }
    int MyString::Compare (MyString p)
    {
        
    MyString newString(this->Mid(0,m_iStringLength));
        if(
    newString p)
            return 
    1;
        if(
    newString == p)
            return 
    0;
        return -
    1;
    }
    int MyString::CompareNoCase (MyString p)
    {
        
    MyString new1(this->Mid(0,m_iStringLength));
        
    MyString new2(p);
        
    new1.MakeUpper();
        
    new2.MakeLower();
        return 
    new1.Compare(new2);

    }
    MyString MyString::Mid (int beginint end)
    {
        
    MyString newString('0',end-begin);
        for (
    int i=0;i<newString.m_iStringLength;i++)
        {
            
    newString.p_cString[i]=p_cString[begin+i];
        }
        return 
    newString;
    }
    MyString MyString::Left (int end)
    {
        
    MyString newString;
        
    newString this->Mid(0,end);
        return 
    newString;

    }
    MyString MyString::Right(int end)
    {
        
    MyString newString;
        
    newString this->Mid(end,this->m_iStringLength);
        return 
    newString;
    }
    void MyString::MakeUpper ()
    {
        for(
    int i=0;i<this->m_iStringLength;i++)
        {
            if((
    this->p_cString[i]>='a')&&(this->p_cString[i]<='z'))
            {
                
    p_cString[i] = p_cString[i] - 32;
            }
        }
    }
    void MyString::MakeLower ()
    {
        for(
    int i=0;i<this->m_iStringLength;i++)
        {
            if((
    this->p_cString[i]>='A')&&(this->p_cString[i]<='Z'))
            {
                
    p_cString[i] = p_cString[i] + 32;
            }
        }
    }
    void MyString::TrimLeft ()
    {
        for(
    int i=0;p_cString[0]=' ';)
        {
            for(
    int j=0;j<this->m_iStringLength;j++)
            {
                
    p_cString[j]=p_cString[j+1];
            }
            
    m_iStringLength--;
        }

    }
    void MyString::TrimRight ()
    {
        for(
    int i=this->m_iStringLength;this->p_cString[i]=' ';i--)
        {
            
    p_cString[i]='\0';
            
    m_iStringLength--;
        }

    }
    int MyString::Find (MyString p)
    {
        for(
    int i=0i<=(this->m_iStringLength-p.m_iStringLength); i++)
        {
            if(
    == this->Mid(i,i+p.m_iStringLength))
                return 
    i;
        }
        return -
    1;
    }
    int MyString::ReserseFind (MyString p)
    {
        for(
    int i=this->m_iStringLengthi>=p.m_iStringLengthi--)
        {
            if(
    == this->Mid(p.m_iStringLength,i))
                return 
    i;
        }
        return -
    1;
    }
    ostream &operator<<(ostream &os, const MyString &p)
    {
        
    os << p.p_cString<<endl;
        return 
    os;
    }
    istream &operator>>(istream &isMyString &p)
    {
        
        
        
    is>>p.p_cString;
        
    int d=0;
        for (
    int i=0;p[i]!='\0';i++)
        {    
            
    d++;

        }
        
    p.m_iStringLength=d+1;
        
        
    cout<<endl;
        return 
    is;

    còn đây là hàm main:
    PHP Code:
    #include "DoAn.h"
    #include <iostream>
    using namespace std;

    void main()
    {
        
    MyString String1;
        
    MyString String2;
        
    MyString newString;
        
    cout<<"Nhap chuoi thu nhat : ";
        
    cin>>String1;
        if (
    String1.IsEmpty() == 1)
            
    cout<<"Chuoi rong"<<endl;
        
    cout<<"Nhap chuoi thu hai  : ";
        
    cin>>String2;
        if (
    String2.IsEmpty() ==)
            
    cout<<"Chuoi rong"<<endl;

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    cout<<"Kiem tra bang nhau cua 2 doi tuong chuoi (case sensitive)"<<endl;
        if(
    String1 == String2)
            
    cout<<"2 chuoi bang nhau"<<endl;
        if(
    String1 String2)
            
    cout<<"Chuoi 1 nho hon chuoi 2"<<endl;
        if(
    String1 String2)
            
    cout<<"Chuoi 1 lon hon chuoi 2"<<endl;
        
    cout<<"So sanh 2 doi tuong chuoi (noncase-sensitive)"<<endl;
        if(
    String1.CompareNoCase(String2) == 1)
            
    cout<<"Chuoi 1 lon hon chuoi 2"<<endl;
        else if (
    String1.CompareNoCase(String2) == 0)
            
    cout<<"Hai chuoi bang nhau"<<endl;
        else 
    cout<<"Chuoi 2 lon hon chuoi 1"<<endl;

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    cout<<"Ghep 2 chuoi"<<endl;

        
    newString String1 String2;
        
    cout<<"Chuoi ket qua sau khi ghep 2 chuoi la: "<<newString<<endl;

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    cout<<"Nhap vi tri muon trich ki tu tu chuoi ghep";
        
    int viTri;
        
    cin>>viTri;
        
    cout<<newString.GetAt(viTri);

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    cout<<"Tach chuoi con tu chuoi ghep";
        
    cout<<"Nhan 1 de lay chuoi con nam trong chuoi\n"<<"Nhan 2 de lay cac ki tu nam dau chuoi\n"<<"Nhan 3 de lay cac ki tu nam cuoi chuoi\n";
        
    int x;
        
    int beginend;
        
    cin>>x;
        switch (
    x)
        {
        case 
    1:
            {

                
    cout<<"Nhap vi tri bat dau cua chuoi con: ";
                
    cin>>begin;
                
    cout<<"Nhap ki tu ket thuc cua chuoi con: ";
                
    cin>>end;
                
    cout<<newString.Mid(begin,end);
            }break;
        case 
    2:
            {
                
    cout<<"Nhap vi tri ket thuc cua chuoi con: ";
                
    cin>>end;
                
    cout<<newString.Left(end);
            }break;
        case 
    3:
            {
                
    cout<<"Nhap vi tri bat dau cua chuoi con: ";
                
    cin>>begin;
                
    cout<<newString.Right(begin);
            }break;
        }

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    newString.MakeUpper();
        
    cout<<"Doi chuoi ghep thanh chu hoa: "<<newString<<endl;

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    newString.MakeLower();
        
    cout<<"Doi chuoi ghep thanh chu thuong: "<<newString<<endl;

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    newString.TrimLeft();
        
    newString.TrimRight();
        
    cout<<"Chuoi sau khi chuan hoa: "<<newString<<endl;

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    MyString FindString;
        
    cout<<"Nhap chuoi can tim :";

        
    cout<<"~~~~~~~~~~~~"<<endl;

        
    cin>>FindString;
        
    cout<<"Vi tri dau tien xuat hien chuoi: "<<newString.Find(FindString)<<endl;
        
    cout<<"Vi tri cuoi cung xuat hien chuoi: "<<newString.ReserseFind(FindString)<<endl;

    Đã được chỉnh sửa lần cuối bởi shjntany : 09-04-2009 lúc 10:23 PM.

  2. #2
    Ngày gia nhập
    10 2008
    Bài viết
    178

    không lỗi hệ điều hành đâu lỗi này do cấp phát bộ nhớ đây mà bác debug kĩ vào là thấy nó lỗi chỗ nào liền

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    4

    ùi, em coi lại sữa gần hết ùi nhưng mà vẫn bị lỗi bộ nhớ, điên thật, dù sao cũng cảm ơn bác nhìu nhá bác rùa.mà sao pak là ràu mà avatar c
    on ngựa thía?? :P

Các đề tài tương tự

  1. Mã nguồn C Lỗi Code thuật toán Minpoint vẽ đường tròn không biết lỗi ở đâu mà không chạy được mong mọi người chỉ giúp.
    Gửi bởi keodautaydang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 23-02-2013, 10:04 AM
  2. Mã nguồn C Lỗi code khai báo lại toán tử + trong việc cộng 2 vector, mong giúp đỡ ạ
    Gửi bởi tuansaker3291 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 22-02-2012, 12:11 AM
  3. code Số hoàn hảo, số chính phương dùng linked-list. Giúp debug
    Gửi bởi Boy_Great trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 18-11-2010, 02:46 AM
  4. Không hiểu code create 1 string random, giúp mình
    Gửi bởi ptnhuan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 22-09-2010, 11:12 AM
  5. mong các bạn giúp mình ,bị lỗi hàm thư viện nhưng sao chạy debug vẫn được
    Gửi bởi thansautk trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 11-06-2009, 06:06 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn