Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1

    thắc mắc về code "Đếm số ký tự xuất hiện trong chuỗi"

    Mã:
    /*Dem so lan xuat hien cac ky tu trong chuoi */
    #include <stdio.h>
    #include <ctype.h>
    #include<conio.h>
    
     main()
    {
      char chuoi[80];
      int i = 0, count = 0;
    
      printf("
    Nhap vao mot chuoi bat ky : ");
      gets(chuoi);
    
      while (chuoi[i] != 0)  
      {
        if (isalpha(chuoi[i++]))
          count++;
      }
    
      printf("So ky tu trong chuoi = %d", count);
      getch();
    }
    Tại sao em sửa lại đoạn if thành:
    Mã:
    while (chuoi[i] != 0)
    {  
       if(isalpha(chuoi[i]))
       {
         i++;
         count++;
       }
    }
    Thì khi xuất hiện dấu cách thì CT không đưa ra kết quả[IMG]images/smilies/17.gif[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ^ Vì vậy hãy tận dụng sức mạnh của for [IMG]images/smilies/smile.png[/IMG]
    Đỡ phải nghĩ nhiều, vả lại init, invariant và condition nằm cùng 1 chỗ [IMG]images/smilies/smile.png[/IMG]

    Giải thích: Vì isalpha() ko bao h nhận dấu cách nên i ko tăng => infinite loop.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi prog10
    ^ Vì vậy hãy tận dụng sức mạnh của for [IMG]images/smilies/smile.png[/IMG]
    Đỡ phải nghĩ nhiều, vả lại init, invariant và condition nằm cùng 1 chỗ [IMG]images/smilies/smile.png[/IMG]

    Giải thích: Vì isalpha() ko bao h nhận dấu cách nên i ko tăng => infinite loop.
    cảm ơn anh [IMG]images/smilies/biggrin.png[/IMG] [IMG]images/smilies/biggrin.png[/IMG]

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thực ra thèng for của C/C++ nó mạnh hơn for của Pas nhiều (C++14 thì nó còn mạnh nữa).
    Nếu chỉ có viết for(i=0; i<n; ++i) thì hóa ra chả hơn gì for của Pascal.

    Ngoài ra, nhờ toán tử comma mà ta có thể viết được câu này:
    for(i=0,j=len-1; i<j; ++i,--j) swap(a[i],a[j]);

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi campus
    Mã:
    /*Dem so lan xuat hien cac ky tu trong chuoi */
    #include <stdio.h>
    #include <ctype.h>
    #include<conio.h>
    
     main()
    {
      char chuoi[80];
      int i = 0, count = 0;
    
      printf("
    Nhap vao mot chuoi bat ky : ");
      gets(chuoi);
    
      while (chuoi[i] != 0)  
      {
        if (isalpha(chuoi[i++]))
          count++;
      }
    
      printf("So ky tu trong chuoi = %d", count);
      getch();
    }
    Tại sao em sửa lại đoạn if thành:
    Mã:
    while (chuoi[i] != 0)
    {  
       if(isalpha(chuoi[i]))
       {
         i++;
         count++;
       }
    }
    Thì khi xuất hiện dấu cách thì CT không đưa ra kết quả[IMG]images/smilies/17.gif[/IMG]
    bạn phải để i++ ra ngoài nếu không sẽ lặp vô tận thì làm sao ra kết quả đc bạn!!

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •