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

Đề tài: Bài tập tìm kiếm kí tự trong xâu ?

  1. #1
    Ngày gia nhập
    03 2021
    Bài viết
    3

    Exclamation Bài tập tìm kiếm kí tự trong xâu ?

    Đây là bài code e làm , e không biết sai sót chỗ nào , thời gian đầu e trình bày theo kiểu mọi thứ đều ở trong hàm main , giờ chuyển sang kiểu này e không hiểu rất nhiều thứ , mọi người đưa e ít lỗi hay gặp phải cho với ạ ...





    #include<iostream>
    #include<cstring>
    using namespace std;
    int demkt(char str[],char x)
    {
    int dem=0;
    for(int i=0;i<=strlen(str);i++)
    {
    if(str[i]==x) ;
    dem = dem+1;

    }
    return dem;
    }

    int main ()
    {
    char str[100];
    char x;
    cout<<"Nhap xau : ";
    cin.getline(str,100);


    cout<<"Nhap ki tu can tim ";
    cin>>x;
    cout<<"Co "<<demkt(str,x)<<"ki tu xuat hien trong xau";


    return 0;
    }
    Attached Files Attached Files

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    537

    Trích dẫn Nguyên bản được gửi bởi bui.quang.hung Xem bài viết
    Đây là bài code e làm , e không biết sai sót chỗ nào , thời gian đầu e trình bày theo kiểu mọi thứ đều ở trong hàm main , giờ chuyển sang kiểu này e không hiểu rất nhiều thứ , mọi người đưa e ít lỗi hay gặp phải cho với ạ ...





    #include<iostream>
    #include<cstring>
    using namespace std;
    int demkt(char str[],char x)
    {
    int dem=0;
    for(int i=0;i<=strlen(str);i++)
    {
    if(str[i]==x) ;
    dem = dem+1;

    }
    return dem;
    }

    int main ()
    {
    char str[100];
    char x;
    cout<<"Nhap xau : ";
    cin.getline(str,100);


    cout<<"Nhap ki tu can tim ";
    cin>>x;
    cout<<"Co "<<demkt(str,x)<<"ki tu xuat hien trong xau";


    return 0;
    }
    Dư dấu ";" sau cái "if()" kìa

  3. #3
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    936

    Trong vòng lặp, không nên sử dụng biểu thức điều kiện có chứa hàm (ở đây là strlen(str)).
    Nếu chỉ có đếm thôi thì nên : for(int i = strlen(str) - 1; i >= 0; i--)
    Trong trường hợp khác cần thực hiện theo thứ tự từng ký tự trong chuỗi thì :
    int length = strlen(str);
    for(int i = 0; i < length; i++)

    .
    .
    .

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

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    Dư dấu ";" sau cái "if()" kìa
    Cả tối mò , hóa ra là sai ngu ạ )

    - - - Nội dung đã được cập nhật ngày 13-03-2021 lúc 11:11 PM - - -

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Trong vòng lặp, không nên sử dụng biểu thức điều kiện có chứa hàm (ở đây là strlen(str)).
    Nếu chỉ có đếm thôi thì nên : for(int i = strlen(str) - 1; i >= 0; i--)
    Trong trường hợp khác cần thực hiện theo thứ tự từng ký tự trong chuỗi thì :
    int length = strlen(str);
    for(int i = 0; i < length; i++)

    .
    .
    .
    Bài trên của e sai là e thêm ; sau if ạ , e sửa r thì thấy chạy đúng . Còn cái ah nói e chưa hiểu lắm , a giải thích rõ hơn đc k ạ ?

    - - - Nội dung đã được cập nhật ngày 13-03-2021 lúc 11:15 PM - - -

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Trong vòng lặp, không nên sử dụng biểu thức điều kiện có chứa hàm (ở đây là strlen(str)).
    Nếu chỉ có đếm thôi thì nên : for(int i = strlen(str) - 1; i >= 0; i--)
    Trong trường hợp khác cần thực hiện theo thứ tự từng ký tự trong chuỗi thì :
    int length = strlen(str);
    for(int i = 0; i < length; i++)

    .
    .
    .
    Bài trên e sai là do e đặt ; sau if ạ , e chạy lại thì thấy ok r , còn phần ah nói là gì e vẫn chưa hiểu lắm , a nói rõ giúpe với ạ ?

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    599

    Trong vòng lặp for(A;B;C), A là biểu thức khởi trị, B là biểu thức điều kiện, C là biểu thức cập nhật điều kiện. Biểu thức khởi trị chỉ được tính một lần khi vào vòng; còn biểu thức điều kiện và cập nhật điều kiện cứ mỗi lần lặp lại phải tính lại, lặp bao nhiêu lần tính bấy nhiêu lần. Vì thế, hai biểu thức sau cần phải gọn, nhanh.

    Biểu thức i < length gọn, nhanh vì chỉ làm mất 1 phép tính. Còn biểu thức i < strlen(str) lớn, chậm vì để tính strlen(str) phải làm N phép tính, với N là độ dài của str.
    Đã được chỉnh sửa lần cuối bởi Ada : 14-03-2021 lúc 09:31 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  6. #6
    Ngày gia nhập
    03 2021
    Bài viết
    3

    Mặc định Bài tập tìm kiếm kí tự trong xâu ?

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Trong vòng lặp for(A;B;C), A là biểu thức khởi trị, B là biểu thức điều kiện, C là biểu thức cập nhật điều kiện. Biểu thức khởi trị chỉ được tính một lần khi vào vòng; còn biểu thức điều kiện và cập nhật điều kiện cứ mỗi lần lặp lại phải tính lại, lặp bao nhiêu lần tính bấy nhiêu lần. Vì thế, hai biểu thức sau cần phải gọn, nhanh.

    Biểu thức i < length gọn, nhanh vì chỉ làm mất 1 phép tính. Còn biểu thức i < strlen(str) lớn, chậm vì để tính strlen(str) phải làm N phép tính, với N là độ dài của str.
    Vâng ạ , e cảm ơn

  7. #7
    Ngày gia nhập
    02 2016
    Bài viết
    311

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Trong vòng lặp for(A;B;C), A là biểu thức khởi trị, B là biểu thức điều kiện, C là biểu thức cập nhật điều kiện. ...
    Làm như bài #3 là hơi luộm thuộm.
    "biểu thức" của C có thể chứa toán tử dấu phẩy ( , )
    Vì vậy, không cần phải tính length trước. Ta có thể:
    for (int i = 0, length = strlen(str); i < length; i++)

    Thực ra, nếu str là một chuỗi chân chính (có kết '\0' ở sau) thì ta có thể xét cái kết đó mà không cần phải gọi hàm strlen:
    for (int i = 0; str[i]; i++)

Tags của đề tài này

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