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

Đề tài: Hàm MakeUpper, MakeLower, Không báo lỗi mà không thể chuyển đổi được

  1. #1
    Ngày gia nhập
    01 2011
    Bài viết
    14

    Angry Hàm MakeUpper, MakeLower, Không báo lỗi mà không thể chuyển đổi được

    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. #include "iostream"
    5. using namespace std;
    6.  
    7. class MyString
    8. {
    9.       private:
    10.               char *data;
    11.               int length;
    12.       public:
    13.               void nhap()
    14.               {
    15.                    data = new char[101];
    16.                    cout<<"\nNhap chuoi: ";
    17.                    cin.getline(data,100);  
    18.               }
    19.              
    20.               void xuat()
    21.               {
    22.                    cout<<"\nChuoi vua nhap la: "<<data;    
    23.               }
    24.              
    25.               // Ham khoi tao khong doi so
    26.               MyString()
    27.               {
    28.                    length=0;
    29.                    data=new char [length +1];              
    30.               }
    31.              
    32.               MyString::MyString(char* s)
    33.               {
    34.                    length = Get_length(*this);
    35.                    data = new char[length + 1];
    36.                    for(int i = 0; i < length ; i++)
    37.                    {
    38.                          data[i] = s[i];
    39.                    }
    40.                    //data[length] = NULL;
    41.               }
    42.               //ham khoi tao voi tham so la mystring
    43.               MyString::MyString(const MyString &s)//Ham dung sao chep
    44.               {
    45.                     length = s.length;
    46.                     data = new char [length + 1];                  
    47.                     for(int i = 0 ; i < length ; i++)
    48.                     {
    49.                         data[i] = s.data[i];
    50.                     }
    51.                     data[length] = NULL;
    52.                    
    53.                     //assert(data!=0);
    54.                     //strcpy(data,s.data);
    55.  
    56.                }
    57.              
    58.               // ham khoi tao voi doi so la char voi n ki tu
    59.               MyString::MyString(char c, int n)
    60.               {
    61.                    length =n;
    62.                    data =new char[length +1];
    63.                    for(int i = 0; i< length; i++)
    64.                    {
    65.                         data[i]=c;
    66.                    }
    67.               }
    68.              
    69.               MyString::~MyString()
    70.               {
    71.                     delete [] data;
    72.               }
    73.              
    74.               // ham lay do dai cua chuoi            
    75.               int MyString::Get_length(const MyString &s)//Tinh so kytu of chuoi, tham so MyString
    76.               {
    77.                 int i = 0;//SO KY TU CUA CHUOI KO BAO GOM KY TU NULL
    78.                 while(s.data[i] != '\0')
    79.                 {          
    80.                     i++;
    81.                 }
    82.                 return i;
    83.               }
    84.              
    85.               //Kiem tra chuoi rong
    86.               int MyString::IsEmpty()
    87.               {
    88.                    if(this->data[0] == 0)
    89.                        return 1;
    90.                    return 0;
    91.               }
    92.              
    93.               //Thiet lap chuoi rong
    94.               void MyString::Empty()//Thiet lap ve chuoi rong
    95.               {
    96.                    delete this->data;
    97.                    this->length = 1;
    98.                    this->data = new char[1];
    99.                    this->data[0] = 0;
    100.               }
    101.              
    102.               //Tra ve vi tri i cua chuoi
    103.               char MyString::GetAt(int vitri)//Lay vi tri
    104.               {
    105.                    if((vitri > -1 ) && (vitri < Get_length(*this)))//Chuoi co do dai n = GetLength(*this)
    106.                         return this->data[vitri];             //Bat dau tu vi tri [0] -> [n-1].
    107.                    else
    108.                         return '\0';
    109.               }
    110.              
    111.               //Gan gia tri ki tu tai vi tri i*****************************
    112.               char MyString:: SetAt(char *c, int vitri)  
    113.               {
    114.                    if(vitri>0 && vitri<=length)
    115.                         return this ->data[vitri]= *c;
    116.                    return '\0';                          
    117.               }
    118.              
    119.               int MyString::CompareNoCase(const MyString &s)//Ham so sanh hai chuoi ko phan biat hoa thuong
    120.               {
    121.                    int kt_ofthis = this->Get_length(*this);
    122.                    int kt_ofs = Get_length(s);
    123.                    if(kt_ofthis > kt_ofs)
    124.                         return 1;
    125.                    else
    126.                         if(kt_ofthis == kt_ofs)
    127.                              return 0;
    128.                         else
    129.                              return -1;
    130.               }
    131.              
    132.               int MyString::Compare(const MyString &s)//Ham so sanh hai chuoi phan biat hoa thuong:
    133.               {
    134.                    if(this->CompareNoCase(s) == 0)        //Neu hai chuoi co do dai bang nhau thi lam nhu sau...
    135.                    for(int i = 0 ; i < this->Get_length(*this) ; i ++ )
    136.                    {
    137.                         {
    138.                              if(this->data[i] > s.data[i])
    139.                                   return 1;
    140.                              else
    141.                                   if(this->data[i] < data[i])
    142.                              return -1;
    143.                         }
    144.                         return 0;                    //Neu tat ca cac ky tu trong chuoi la giong nhau.
    145.  
    146.                    }
    147.                    return this->CompareNoCase(s);        //Neu hai chuoi co do dai` # nhau.
    148.               }
    149.              
    150.              
    151.               //lay chuoi con
    152.               MyString MyString::Mid(int start , int end)//Lay chuoi con tu vi tri [start] -> [end]
    153.               {
    154.                    MyString tam;
    155.                    if((end < start) || (start < 0))
    156.                    {        
    157.                         return tam; // <=> return NULL.
    158.                    }
    159.                    else
    160.                    {        
    161.                         tam.data = new char [end - start + 2]; //O day la + 2 vi` + 1 ky tu start + them ky tu NULL.
    162.                         tam.length = (end - start + 1);    
    163.        
    164.                         for(int i = 0 ; i < tam.length ; i ++)
    165.                              {
    166.                                   tam.data[i] = this->data[i + start];
    167.                              }
    168.                         tam.data[tam.length] = '\0';
    169.                         return tam;
    170.                    }
    171.               }
    172.              
    173.               //Lay cac ki tu dau tien cua chuoi
    174.               MyString MyString::Left(int end)//Lay chuoi con tu vi tri [0] -> [end]
    175.               {
    176.                    if((end <0 ) || ( end > Get_length(*this) - 1))//Vi this->m_cData[GetLength(*this) - 1] la` vi tri chua ky tu cuoi cung cua chuoi
    177.                    {
    178.                         MyString tam;
    179.                         return tam;
    180.                    }
    181.                    else
    182.                    {
    183.                         MyString tam;
    184.                         tam.length = end;
    185.                         tam.data = new  char [tam.length];
    186.                         for(int i = 0 ; i < tam.length ;i ++ )
    187.                              tam.data[i] = this->data[i];
    188.                         return tam;
    189.                    }    
    190.               }  
    191.  
    192.               MyString MyString::Right(int start)//Lay chuoi con tu vi tri [start] -> [end of chuoi]
    193.               {
    194.                    if((start < 0 ) || ( start > Get_length(*this) - 1))//Vi this->m_cData[GetLength(*this) - 1] la` vi tri chua ky tu cuoi cung cua chuoi
    195.                    {
    196.                          MyString tam;
    197.                          return tam;
    198.                    }
    199.                    else
    200.                    {
    201.                          MyString tam;
    202.                          tam.length = start;
    203.                          tam.data = new  char [tam.length];
    204.                          for(int i = 0; i < tam.length ;i ++ )
    205.                                tam.data[i] = this->data[Get_length(*this)-start+i];
    206.                          return tam;
    207.                    }
    208.               }
    209.  
    210.               MyString MyString::MakeUpper()//Doi chuoi sang chu HOA
    211.               {
    212.                     for(int i = 0 ; i < Get_length(*this) ; i ++)
    213.                          this->data[i] = toupper(this->data[i]);
    214.                     return *this;
    215.               }
    216.  
    217.                 MyString MyString::MakeLower()//Doi chuoi sang chu thuong
    218.               {
    219.                     for(int i = 0 ; i < Get_length(*this) ; i ++)
    220.                          this->data[i] = tolower(this->data[i]);
    221.                     return *this;
    222.               }
    223.  
    224.               //Xoa khoang trang             
    225.               MyString MyString::DeleteAt(int vitri)//Xoa 1 ky tu tai vi tri [vitri]
    226.               {
    227.                     MyString tam;
    228.                     tam.length = this->length - 1;
    229.                     tam.data = new char [tam.length];
    230.                     for(int i = 0 ; i < vitri ; i ++)
    231.                     {
    232.                         tam.data[i] = this->data[i];
    233.                     }
    234.                     *this = tam;
    235.                     return *this;
    236.               }
    237.              
    238.               // dem khoang trang o dau chuoi
    239.               int MyString::Demspace(const MyString &s)
    240.               {
    241.                     int i=0;
    242.                     while(s.data[i]==' ')
    243.                     {
    244.                         i++;
    245.                     }return i;
    246.               }
    247.               //Dem khoang trang cuoi chuoi
    248.                int MyString::Demspace_R (const MyString &s)
    249.               {
    250.                     int i=0;
    251.                     while(s.data[Get_length(*this)]==' ')
    252.                     {
    253.                         i--;
    254.                     }return i;
    255.               }
    256.               MyString MyString::TrimLeft()//Cat bo tat ca khoang trang dau chuoi
    257.               {
    258.                     MyString tam;
    259.                     tam.length = this->Get_length(*this)-Demspace(*this);
    260.                     tam.data = new char [tam.length];
    261.                     for(int i = 0 ; i < tam.length ; i ++)
    262.                     {
    263.                         tam.data[i] = this->data[i+Demspace(*this)];
    264.                     }
    265.                     return tam;
    266.               }
    267.  
    268.               MyString MyString::TrimRight()//Cat bo tat ca khoang trang cuoi chuoi
    269.               {
    270.                     MyString tam;
    271.                     tam.length = this->Get_length(*this)-Demspace_R(*this);
    272.                     tam.data = new char [tam.length];
    273.                     for(int i = 0 ; i < tam.length ; i ++)
    274.                     {
    275.                         tam.data[i] = this->data[i];
    276.                     }
    277.                     return tam;
    278.               }
    279.  
    280.  
    281.               //tim vi tri xuat hien dau tien cua ki tu hay chuoi
    282.               int MyString::Find(char* s)
    283.               {                          
    284.                     int sotu = Get_length(*this);
    285.                     int vitri=0;
    286.                     if(sotu == 1)
    287.                     {
    288.                         for(int i = 1 ; i <= Get_length(*this) ; i ++)
    289.                             if(this->data[i] == *s)
    290.                             {
    291.                                  vitri = i;
    292.                                  break;
    293.                             }        
    294.                     }
    295.                     else
    296.                     {
    297.                         for(int i = 0 ; i <= Get_length(*this) - sotu ; i ++)
    298.                         {
    299.                             if((this->Mid(i,i + sotu - 1)) == s)
    300.                             {
    301.                                 vitri = i;
    302.                                 break;
    303.                             }
    304.                         }
    305.                     }
    306.                     if(vitri == -1) cout << " Khong tim thay \"" << s <<"\"";
    307.                     return vitri;
    308.                }
    309.  
    310.               //tim vi tri xuat hien cuoi cung cua chuoi con
    311.                int MyString::ReverseFind(char* s)
    312.               {                          
    313.                     int sotu = Get_length(*this);
    314.                     int vitri=0;
    315.                     if(sotu == 1)
    316.                     {
    317.                         for(int i = Get_length(*this) ; i >=0 ; i --)
    318.                             if(this->data[i] == *s)
    319.                             {
    320.                                  vitri = i;
    321.                                  break;
    322.                             }        
    323.                     }
    324.                     else
    325.                     {
    326.                         for(int i = Get_length(*this) ; i >=0 ; i --)
    327.                         {
    328.                             if((this->Mid(i,i + sotu - 1)) == s)
    329.                             {
    330.                                 vitri = i;
    331.                                 break;
    332.                             }
    333.                         }
    334.                     }
    335.                     if(vitri == -1) cout << " Khong tim thay \"" << s <<"\"";
    336.                     return vitri;
    337.                }
    338.               //Cac toan tu
    339.  
    340.               friend ostream & operator <<(ostream &os , const MyString &s)//Toan tu xuat
    341.               {    
    342.                     os << s.data;
    343.                     return os;
    344.               }
    345.  
    346.            
    347.               friend bool operator == ( const MyString &a, const MyString &b)  
    348.               {
    349.                     return strcmp(a.data, b.data)==0;
    350.               }
    351.  
    352.               friend bool operator >( const MyString &a, const MyString &b)  
    353.               {
    354.                     return strcmp(a.data, b.data)>0;
    355.               }
    356.              
    357.               friend bool operator <( const MyString &a, const MyString &b)  
    358.               {
    359.                     return strcmp(a.data, b.data)<0;
    360.               }
    361.  
    362.             /*
    363.               friend MyString & operator + ( const MyString &a, const MyString &b) // toan tu noi hai xau
    364.               {
    365.                     MyString tam;
    366.                     tam.length=a.length + b.length;
    367.                     //delete [] tam.data;
    368.                     tam.data= new char[tam.length+1];
    369.                     for(int i=0; i<tam.length; i++)
    370.                     {
    371.                         if(i<a.length)
    372.                             tam.data[i]=a.data[i];
    373.                         else
    374.                             tam.data[i]=b.data[i];
    375.                     }
    376.                     return tam;
    377.              }
    378.             */
    379.               char & MyString::operator[](  int n)  
    380.               {
    381.                     if( n<length && n>=0)
    382.                             return data[n];
    383.               }
    384.  
    385.               /*
    386.               friend MyString operator =(const MyString &a, const MyString &b)//toan tu =
    387.               {
    388.                     length = b.length;
    389.                     data = new char[length + 1];
    390.                     for(int i = 0 ; i < length ; i ++)
    391.                     {
    392.                         a.data[i] = b.data[i];
    393.                     }
    394.                     data[length] = NULL;
    395.                     return *this;
    396.               }
    397.               */
    398.               // Cac ham chuc nang
    399. };
    400. int vitri1, vitri2;
    401.     MyString s1,s2,s3,s4;
    402.     char *c, *b;
    403.     c = new char[101];
    404.     b = new char[101];
    405.     s1.nhap();
    406.     s1.xuat();
    407.     s2.nhap();
    408.     s2.xuat();
    409.     if(s1>s2)
    410.         cout<<"\nchuoi s1 lon hon chuoi s2";
    411.     if(s1<s2)
    412.         cout<<"\nchuoi s1 nho hon chuoi s2";
    413. //  if(s1=s2)
    414. //      cout<<"\nchuoi s1 bang chuoi s2";
    415.    
    416.     cout<<"\nNhap vi tri can tra ve: "; cin>>vitri1;
    417.     cout<<"\nKi tu tai vi tri "<<vitri1<<"la: "<<s1.GetAt(vitri1)<<endl;
    418.     cout<<"\nNhap vi tri can tra ve: "; cin>>vitri2;
    419.     cout<<"\nGia tri gan la: "; cin>>c;
    420.     cout<<"\nChuoi sau khi duoc gan gia tri moi la: "<<s1.SetAt(c,vitri2)<<endl;
    421.     cout<<"Lay chuoi con";
    422.     int dau, cuoi, d, cd;
    423.     cout<<"\nDau"; cin>>dau;
    424.     cout<<"\ncuoi"; cin>>cuoi;
    425.     cout<<"\nchuoi con can tim la:   "<<s1.Mid(dau,cuoi);
    426.     cout<<"\nNhap so ki tu duoc lay: "; cin>>d;
    427.     cout<<"\nCac ki tu dau tien cua chuoi la:  "<<s1.Left(d)<<endl;
    428.     cout<<"\nNhap so ki tu duoc lay: "; cin>>cd;
    429.     cout<<"\nCac ki tu cuoi cung cua chuoi la: "<<s1.Right(cd)<<endl;
    430.     cout<<"\nChuoi sau khi xoa cac khong trang o dau chuoi:  "<<s2.TrimLeft();
    431.     cout<<"\nChuoi sau khi xoa cac khong trang o cuoi chuoi: "<<s2.TrimRight();
    432.     //cout<<"\nChuoi co do dai la: "<<s1.Get_length();
    433.     cout<<"\nChu hoa la: "<<s2.MakeUpper()<<endl;
    434.     cout<<"\nChu thuong la: "<<s2.MakeLower()<<endl;
    435.     int sosanh1,sosanh2;
    436.     sosanh1 =s1.Compare(s2);
    437.     cout<<"\nhbn: "<<sosanh1;
    438.     sosanh2 =s1.CompareNoCase(s2);
    439.     cout<<"\nhbn: "<<sosanh2;
    440.    
    441.     s4 =s1+""+s2;
    442.     cout<<"\nSau khi noi hai chuoi lai la: "<<s4;
    443.     trave=s6.Find(b);
    444.     cout<<"\nNhap chuoi hay ki tu can tim:"; cin>>b;
    445.     trave=s2.Find(b);
    446.     cout<<"\nChuoi can tim o vi tri thu: "<<trave;
    447.     return 0;
    448. }
    Ai có thể giúp em làm sau để có thể chuyến đổi sang chữ hoa hoặc chữ thường.
    Với lại phần tìm kiếm, phần toán tử cộng
    Đã được chỉnh sửa lần cuối bởi beautifulsoul84hung : 31-10-2011 lúc 01:10 AM. Lý do: cho code vào tag

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

    Bạn tạo 1 file .cpp mới.
    Copy đoạn Class vào , hàm main vào. rồi thử như sau xem :
    Định nghĩa lại hàm Get_length
    C++ Code:
    1. int MyString::Get_length()
    2. {
    3.    int i;
    4.    for(i=0;data[i]!='\0';i++)
    5.  
    6.    return i+1;
    7. }

    Ở hàm MakeUpper và Lower thay đổi như sau
    C++ Code:
    1. MyString MyString::MakeUpper()//Doi chuoi sang chu HOA
    2. {
    3.    for(int i = 0 ; i < Get_length() ; i ++)
    4.      data[i] = toupper(data[i]);
    5.    return *this;
    6. }

    Bạn định nghĩa lại Get_length và sử dụng nó để test mới 2 hàm này ở file code khác xem kết quả ra sao ?? Có thay đổi dc tình hình gì ko
    Đã được chỉnh sửa lần cuối bởi clchicken : 29-10-2011 lúc 10:38 PM.

  3. #3
    Ngày gia nhập
    01 2011
    Bài viết
    14

    Mặc định Nó cũng không báo lỗi nữa mà cũng chẳng đổi được

    Mà cũng cám ơn nhiều luôn. Để em xem lại ngày mai anh có thể lên giúp em được không nếu em làm không ra

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Hix. Lần sau bạn làm ơn chỉ post class ,những phương thức bị lỗi (gồm cả những hàm mà nó gọi đến) và đoạn main . Sau đó đặt vào bộ khóa [code=cpp] ...[ /code] giùm.
    Chứ đọc 1 đống đấy lòi cả mắt ra :(

    Bạn thử cái trên đi xem có gì khác ? . Mà mình thấy code của bạn có gì sai đâu nhỉ @@ . Mà nếu sai thì cũng chỉ có ở chỗ là biến i nó ko chạy được cho nên nó ko Upper và lower thôi @@

  5. #5
    Ngày gia nhập
    01 2011
    Bài viết
    14

    Smile Em làm được rồi, Nhưng phần tìm kiếm nó chỉ trả về một dãy số luôn

    int MyString::Find(char* s)
    {
    int sotu = Get_length(s);
    int vitri;
    if(sotu == 1)
    {
    for(int i = 1 ; i <= Get_length(*this) ; i ++)
    if(this->data[i] == *s)
    {
    vitri = i;
    break;
    }
    }
    else
    {
    for(int i = 0 ; i <= Get_length(*this) - sotu ; i ++)
    {
    if((this->Mid(i,i + sotu - 1)) == s)
    {
    vitri = i+1;
    break;
    }
    }
    }
    //if(vitri == -1) cout << " Khong tim thay \"" << s <<"\"";
    return vitri;
    }
    int main()
    {
    char *c;
    c = new char[101];
    cout<<"\nNhap chuoi hay ki tu can tim "; cin>>c;
    cout<<"\nChuoi can tim o vi tri "<<s1.Find(c);
    }

    cái nầy nó trả về một dãy số luôn ak. Xem dùm em coi nó có chỗ nào không ổn. thank you :very much!!

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Mặc định Hàm MakeUpper, MakeLower, Không báo lỗi mà không thể chuyển đổi được

    @ truonglong :
    Bạn lập trình hướng đối tượng mà sao lại nhào nặn thế . Phương thức của class mà có đối số thứ 2 cũng là 1 đối tượng thuộc class thì nên khai báo tham số đó là class chứ ? Cụ thể : Find(MyString ob2) . Và ta sử dụng nó như đối tượng .
    Thêm nữa, Get_length là phương thức của MyString và nó tính kích thước của đối tượng thuộc MyString vì vậy cũng ko cần phải định nghĩa nó có đối số . Bởi vì chính đối tượng gọi Get_length là đối số đầu tiên (thông qua con trỏ this) của nó rồi
    Sau đó
    Bạn nên chỉnh lại giải thuật thế này :
    Tạo 1 biến int j =0;
    Cho i chạy trong ob1 (tức là đối tượng gọi phương thức Find (trỏ this) ) .
    Nếu data[i] == ob2.data[j] thì cho j++ và tiếp tục . Hết chuỗi ob2.data thì tăng biến đếm lên và j gán về 0 ;
    Nếu ko = nhau thì cứ tiếp tục vòng lặp

  7. #7
    Ngày gia nhập
    01 2011
    Bài viết
    14

    Em tìm được vi trí của một kí tự .cho em hỏi khi mà chuỗi con cần tìm có trong chuỗi thì nó sẽ xuất ra vi trí như thế nào.Em không hình dung ra là nó sẽ xuất sao nữa. anh có thể giải thích giúp em không.

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Trích dẫn Nguyên bản được gửi bởi truonglong99 Xem bài viết
    Em tìm được vi trí của một kí tự .cho em hỏi khi mà chuỗi con cần tìm có trong chuỗi thì nó sẽ xuất ra vi trí như thế nào.Em không hình dung ra là nó sẽ xuất sao nữa. anh có thể giải thích giúp em không.
    Nếu mà bạn muốn xuất vị trí của chuỗi s2 trong chuỗi s1 ( có thể có nhiều vị trí) thì bạn tự làm tay thế này :
    Và cái đầu ra Output của nó là danh sách các vị trí xuất hiện. Bạn có dc danh sách này rồi bạn muốn xuất hay xem hay nhòm gì cũng dc

    1)Cũng như hàm find mình đã nói cho bạn về ý tưởng ở trên . Ở công đoạn đã xác định dc chuỗi s2 đã nằm trong s1 thì Thay vì mình tăng biến đếm lên thì ta tạo 1 mảng, và lưu vị trí mà nó xuất hiện (Dễ thôi , dùng sự tương quan của độ dài chuỗi s2 với vị trí i mà ta kết luận s1 nằm trong s1 để tính)

    2) Bạn có thể dùng stack .Cho j =0, Khi i duyệt chuỗi s1 ,với mỗi i , push i vào stack nếu s1[i]!=s2[j] thì Pop stack (nếu stack chưa cạn) ngược lại thì ngừng việc push . Tăng i và j lên. nếu j=length(s2) thì reset j về 0. Có vẻ cách này rắc rối nếu bạn chưa mườn tượng dc

    Cách này thừa kế hàm đã có trong C . và bạn vận dụng nó . Nếu ko thích "phát minh lại bánh xe"
    3) Hình như trong C/C++ có cái hàm strcat gì đấy quên mất rồi mà nó làm công việc tìm vị trí đầu tiên của s2 xuất hiện trong s1) Bạn có thể lục google, msdn hoặc xem giáo trình C 1 phát là xong .
    Ta vận dụng cái hàm này. Tạm gọi nó là HAM đi nhé
    C++ Code:
    1. -Tạo 1 mảng để lưu các vị trí xuất hiện . Nên khởi tạo mảng toàn phần tử -1 . // Hoặc bạn có thể dùng DSLK cho nó linh động
    2. Ta gọi nó là Output đi nhé
    3. -Tạo 1 con trỏ flag kiểu char để chuẩn bị cho duyệt trong s1. Gán flag = s1;
    4. - 1 biến s =0 ; // Cái này để chuẩn bị cộng dồn các vị trí của chúng cho chính xác
    5. while (HAM( cho ra vị trí (tức s2 có xuất hiện trong flag) )
    6. {
    7.        vị trí đó (tạm gọi là i) cho cộng vào s; // s=s+i;
    8.        lưu s vào output; // s là vị trí đích thực
    9.        flag=&s1[i]; // đẩy flag lên phần chuỗi còn lại để xét tiếp
    10. }
    11. Làm xong cái này bạn có 1 cái output , lưu dc các vị trí mà s2 xuất hiện trong s1
    Đã được chỉnh sửa lần cuối bởi clchicken : 30-10-2011 lúc 10:36 PM.

  9. #9
    Ngày gia nhập
    01 2011
    Bài viết
    14

    Smile Em hiểu rồi

    Thank anh nhiều nhe. Cho em hỏi thêm là em chạy với visual studio 2008 khi su dung strcpy, strcat thì nó lại đưa ra cảnh báo, em có khai báo thư viện #include<string.h> mà cũng cảnh báo làm sao để hết.

  10. #10
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Bạn nên đọc dòng warning đó để biết nó warrning về cái gì Và có nguy hiểm gì ko ? Và bạn đã có biện pháp khử nó chưa ? .
    Ở mức độ học tập thì bạn có thể chưa cần biết nó nhiều làm gì. Bạn làm nhiều , nhiều nhiều rồi sẽ hiểu và xử lý chúng
    Khi đi sâu vào C++ và HDT bạn sẽ có các công cụ mạnh hơn mấy cái hàm đó mà lại an toàn, ko warning
    Bạn cũng ko cần phải xưng em, anh vì có thể chúng ta = tuổi , mà nếu có lớn hơn đi nữa thì cũng xưng bạn, mình cho nó thân thiện . Bởi vì kiến thức là ko phân biệt tuổi tác, nhất là ở môi trường diễn đàn online thế này. Hơn nữa trình mình cũng còn gà thôi, nên chưa làm "anh" được đâu
    Thân mến !
    Đã được chỉnh sửa lần cuối bởi clchicken : 30-10-2011 lúc 11:18 PM.

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

  1. Mẹo hay khi chuyển nhà trọn gói, chuyển văn phòng
    Gửi bởi quynhcute trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 20-08-2012, 09:53 PM
  2. Trả lời: 0
    Bài viết cuối: 07-08-2012, 05:12 PM
  3. Trả lời: 20
    Bài viết cuối: 27-02-2012, 12:05 AM
  4. Dịch vụ chuyển nhà chuyển văn phòng chuyên nghiệp
    Gửi bởi nguyenthihau trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 07-08-2011, 10:00 AM
  5. ADO.NET Chuyể Phần mềm QLNS sang Ngôn ngữ Dynamic Programming. Ai chuyển giúp mình!?
    Gửi bởi huynhanhton trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 03-04-2011, 11:41 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