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

Đề tài: Lập trình C | Đếm nguyên âm trong chuỗi?

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

    Mặc định Lập trình C | Đếm nguyên âm trong chuỗi?

    Cá bác giúp em bài này với!
    Trinh bay giai thuat va cai dat tren C de thong ke so luong cac nguyen am xuat hien trong cac tu trong 1 file van ban Tieng Viet. ( Chuong trinh doc du lieu tu 1 file INPUT.TXT co noi dung tieng Viet khong dau,doc file,xu ly va ghi ra file OUTPUT.TXT cac chu cai la nguyen am xuat hien va tan xuat xuat hien cua chung trong file)

    File INPUT.TXT:

    Toi la sinh vien, toi thuong di hoc bang xe may.

    File OUTPUT.TXT:

    o 4
    a 3
    i 5
    e 2
    u 1

    (chuỗi có dấu cách)

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Chắc là không phân biệt hoa thường chứ. Hướng làm như này nhé.

    - Đọc chuỗi kí tự từ file vào một mảng char

    - Tạo săn một mảng char Vow[5]={'u','e','o','a','i'} một mảng int count[5];

    - Duyệt chuỗi và so sánh từng kí tự với các kí tự trong mảng Vow nếu s[i] == Vow[j] thì count[j]++; (nhớ lower case trước khi so sánh)

    - In những count[i] > 0 và kí tự tương ứng ở Vow vào file out.

    Bạn hãy thử trước đi, post kết quả lên đây mọi người check dùm, chú ý post bài bằng TV có dấu.

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

    Em có code một đoạn như sau . Nhưng khi em thử gõ "cong dong c viet" thì nó chỉ báo có 1 chữ 'o' và không còn nguyên âm nào khác . Em nghĩ chắc tại vì đến kí tự trống đầu tiên thì nó dừng . Nhờ các anh sửa giúp em , em mới bắt đầu học C nên hơi mù mờ

    PHP Code:
    #include <stdio.h>\\ dem tan suat xuat hien cua nguyen am
    main ()
    {
      
    int a,A=0,E=0,I=0,O=0,U=;
      
    char xau[20],;
     
     
    scanf ("%s",xau);
     
           for (
    a=0;a<19;a++)
           {
           if (
    xau[a]==97 || xau[a]==65A++;
            else if (
    xau[a]==101 || xau[a]==69E++;
            else if (
    xau[a]==105 || xau[a]==73I++;
            else if (
    xau[a]==111 || xau[a]==79O++;
            else if (
    xau[a]==117 || xau[a]==85U++;
           }
         
         
    printf ("A : %d" A);
         
    printf ("\nE : %d" E);
         
    printf ("\nI : %d" I);
         
    printf ("\nO : %d" O);
         
    printf ("\nU : %d" U);
     
     while (
    y!='x')
     
    scanf ("%c",&y);


  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Vấn đề của bạn ở đây scanf ("%s",xau);
    Nhập xâu thì dùng gets() nếu không khi gặp kí tự trống nó sẽ tình là kết thúc. một xâu.

    Tham khảo thêm:
    C Code:
    1. #include <stdio.h>
    2. /*
    3. */
    4. int main()
    5. {
    6.     char s[100] = "Chao mung cac ban toi Cong dong C Viet.";
    7.     char Vow[6] = "ueoai";
    8.     int Count[5] = {0}, i=0, j;
    9.     while (s[i]!='\0')
    10.     {
    11.         for(j=0; j<5; j++)
    12.             if (s[i] == Vow[j] || s[i]+32 == Vow[j]) Count[j]++;
    13.         i++;
    14.     }
    15.  
    16.     for(j=0; j<5; j++)
    17.         if (Count[j]) printf(" - Ki tu %c xuat hien %d lan. \n",Vow[j],Count[j]);
    18.     return 0;
    19. }
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 09-04-2009 lúc 07:42 PM.

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

    Cảm ơn bác , cái giáo trình Aptech em tự đọc nó không nói rõ cái này :(

  6. #6
    Ngày gia nhập
    11 2008
    Bài viết
    116

    Mặc định Lập trình C | Đếm nguyên âm trong chuỗi?

    Bạn mua cuốn" kĩ thuật lập trình C " của giáo sư Phạm Văn Ất là tốt nhất.

  7. #7
    Ngày gia nhập
    11 2008
    Bài viết
    5

    uhm
    bạn cũng nên chú ý:
    nếu trước hàm gets(); mà đã có \n
    vd: printf("\n ........"); thì phải xem chừng vì thằng này sẽ xuất ra \n thôi rồi ko làm gì nữa---------->>>>>. khi hoat dong se ko làm đúng ý mình muốn
    =>có thể dùng hàm cin>>"" trong c++ hoặc gets gets 2 lần để khắc phuc
    hoặc dùng hàm xóa bộ đệm flushstdin(); cũng dc

  8. #8
    Ngày gia nhập
    01 2009
    Bài viết
    165

    bạn cũng có thể sử dụng bảng mã ASCI để làm ,bạn tạo 5 biến đếm để đếm số lần xuất hiện,rồi chạy từ đầu đến cuối nếu mã ASCI của kí tự đó trùng với mã ASCI của nguyên âm nào thì tăng biến đếm của nguyên âm đó lên 1.dùng switch để làm.

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

  1. Lập trình C Lỗi khi vừa nhập vừa kiểm tra một chuỗi có phải là chuỗi số nguyên hay không?
    Gửi bởi omaiot trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 21-02-2013, 10:44 PM
  2. Kỹ thuật C Gán chuỗi cho một số nguyên
    Gửi bởi vokhuyet984 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 05-02-2012, 09:31 PM
  3. Đếm số nguyên âm và phụ âm trong chuỗi
    Gửi bởi sieuquaypc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 14
    Bài viết cuối: 14-09-2011, 11:05 AM
  4. Kỹ thuật C++0x Cách dùng itoa biến đổi số nguyên thành chuỗi trong lập trình HĐT
    Gửi bởi thaihoa311 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 09-05-2010, 08:23 PM
  5. Chuỗi Đối xứng và dãy số nguyên
    Gửi bởi dieulinh_hg trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 18-02-2008, 07:59 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