Chào, Khách!
  1. integer
    Offline
    integer   [1.695/1.313]
    Với đề sau:Viết chương trình kiểm tra ‘‘hello’’ có trong xâu s hay không*?(không phân biệt chữ hoa và chữ thường)

    Vấn đề cần quan tâm ở đây là tìm kiếm chuỗi trong chuỗi.
    Thuật toán dưới đây sẽ duyệt chuỗi, gặp chữ 'h' hoặc 'H' sẽ copy 5 ký tự tiếp theo vào mảng tạm , sau đó so sánh với "hello".

    Vấn đề thứ 2 là không phân biệt hoa thường. ở đây dùng strupr(); --> chuyển về viết hoa để so sánh.

    Mã:
    #include<iostream>
    #include<string.h>
    #include<cstdio>
    using namespace std;
    main()
    {
        char a[50],b[6],d[6]="HELLO";
        cout<<"\nNhap chuoi: ";
        gets(a);
        int slen=strlen(a);
        for(int i=0;i<slen-4;i++)
        {
            if(a[i]=='h'||a[i]=='H')
            {
                int k=i;
                for(int j=0;j<5;j++)
                    {
                        b[j]=a[k];
                        k++;
                    }
            }
            if(strcmp(b,d)==0)
                break;
        }
        strupr(b);
        if(strcmp(b,d)==0)
            cout<<"\nCo";
        else
            cout<<"\nKhong";
    }
    
    
    Thuật toán mới chỉ giải quyết được vấn đề, song vẫn chưa tối ưu lắm.
    --> cần một thuật toán tối ưu hơn ?
    hongoctrien, BigZero, KunMinzi1 người khác thích bài này.