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

Đề tài: Kiểm tra đúng/sai của chuỗi người dùng nhập vào từ bàn phím trong C?

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

    Question Kiểm tra đúng/sai của chuỗi người dùng nhập vào từ bàn phím trong C?

    Yêu cầu đưa ra cần kiểm tra một chuỗi người dùng nhập vào, chuỗi đúng cần thoả mãn không có khoảng trắng ở đầu và cuối , số từ trong chuỗi ít nhất là 2 hoặc nhiều nhất là 4, giữa các từ không được quá 1 khoảng trắng, bắt đầu mỗi từ phải là chữ hoa còn lại là các chữ thường.
    Đây là đoạn code của mình , ai có thể check dùm với :
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4. #define space ' '
    5.  
    6. //Module input
    7. void input(char a[])
    8. {
    9.     fflush(stdin);
    10.     printf("\nAccpet one string :");
    11.     gets(a);
    12. }
    13.  
    14.  
    15. //Module check the number of words
    16. int check_word(char a[])
    17. {
    18.     int i, count=0, l;
    19.     l=strlen(a);
    20.     if(a[0]!=space && a[0] != '\t' && a[0] != NULL)
    21.         count++;
    22.     for(i=0; i<l; i++)
    23.     {
    24.         if(a[i]==space)
    25.             if(a[i+1]!=space && a[i+1]!='\t' && a[i+1] != NULL)
    26.                 count++;
    27.     }
    28.     if(2<=count && count <= 4)  return 1;
    29.     else return 0;
    30. }
    31.  
    32.  
    33. //Module check the space
    34. int check_space(char a[])
    35. {
    36.     int i, l, count=0;
    37.     l=strlen(a);
    38.     if(a[0] == space || a[0] == '\t' || a[0] == NULL)
    39.         count++;
    40.     if(a[l-1] == space || a[l-1] == '\t' || a[l-1] == NULL)
    41.         count++;
    42.     for(i=0; i<l; i++)
    43.     {
    44.         if(a[i]!= space&&a[i]!='\t'&&a[i]!=NULL)
    45.             if(a[i+1]==space || a[i+1] == '\t' || a[i+1] == NULL)
    46.                 if(a[i+2] == space || a[i+2] == '\t' || a[i+2] == NULL)
    47.                     count++;
    48.     }
    49.     if(count==0)    return 1;
    50.     else    return 0;
    51. }
    52.  
    53.  
    54. //Module check lower-case and upper-case letter
    55. int check_case(char a[])
    56. {
    57.     int i, l , count=0, count_up=0, count_w=0;
    58.     l=strlen(a);
    59.     for(i=0; i<l; i++)
    60.     {
    61.         if(65<=a[i] && a[i]<=90)
    62.             count_up++;
    63.     }
    64.     if(a[0]!=space && a[0] != '\t' && a[0] != NULL)
    65.         count_w++;
    66.     for(i=0; i<l; i++)
    67.     {
    68.         if(a[i]==space)
    69.             if(a[i+1]!=space && a[i+1]!='\t' && a[i+1] != NULL)
    70.                 count_w++;
    71.     }
    72.     if(count_w!=count_up)   count++;
    73.     if(a[0]<=65 && a[0] >= 90)  count++;
    74.     for(i=0; i<l; i++)
    75.     {
    76.         if(a[i]==space)
    77.             if(a[i+1]<=65 && a[i+1]>=90)
    78.                 count++;
    79.     }
    80.     if(count==0)    return 1;
    81.     else    return 0;
    82. }
    83.  
    84.  
    85.  
    86. //Main function
    87. void main()
    88. {
    89.     char a[100];
    90.     clrscr();
    91.     input(a);
    92.     if(check_word(a))
    93.         if(check_space(a))
    94.             if(check_case(a))        
    95.                 printf("\n ---> Correct.");
    96.     else    printf("\n ---> Incorrect.");
    97.     getch();
    98. }
    Mình đang bị lỗi ở cái hàm check_case. Ý thuật toán của mình là đếm số chữ hoa trong chuỗi và so sánh với số từ trong chuỗi , sau đó kiểm tra mỗi chữ cái đầu của một từ.
    Đã được chỉnh sửa lần cuối bởi n0b0dy.n0l0v3 : 18-09-2011 lúc 12:12 AM.

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Dài dòng loằng ngoằng quá mình đọc ko hết
    mình gửi thử cái code này bạn xem thử xem có ổn ko
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. int check(const char *str)
    4. {
    5.     int i;
    6.     int nspace;
    7.     if (str==NULL||*str<'A'||*str>'Z') return 0;
    8.     for (i=0,nspace=0;str[i]!=NULL;i++)
    9.     {
    10.         if (str[i]==' ')
    11.         {
    12.             if (str[i+1]<'A'||str[i+1]>'Z') return 0;
    13.             nspace++;
    14.         }
    15.         else if (i>0&&str[i-1]!=' '&&str[i]<'a'||str[i]>'z') return 0;
    16.     }
    17.     return nspace>0&&nspace<4;
    18. }
    19. void main(void)
    20. {
    21.     printf("%d",check("An Bi C"));
    22.     getch();
    23. }
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

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

  1. Sắp xếp 4 số a,b,c,d nhập từ bàn phím không dùng mảng chuỗi. Xem giúp code đúng không?
    Gửi bởi vu159951 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 16-11-2012, 11:34 AM
  2. Trả lời: 5
    Bài viết cuối: 22-02-2012, 06:20 PM
  3. Kiểm tra chuỗi đối xứng. Sai khi nhập chuỗi 3 ký tự, còn lại đúng. Ai xem giúp mình với
    Gửi bởi Shock0z trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 10
    Bài viết cuối: 12-11-2011, 09:28 PM
  4. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  5. Làm thế nào để bắt người dùng nhập đúng ngày tháng năm trong maskedtextbox
    Gửi bởi ducanhkt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 02-06-2010, 08:25 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