Video Ngôn Ngữ C - 30 - viết chương trình đếm từ

#include <stdio.h>
#define IN 1 /* ben trong 1 tu */
#define OUT 0 /* ben ngoai 1 tu */
int main()
{
    int c, state;
    state = OUT;
    while ((c = getchar()) != EOF) {
        if (c == ' ' || c == '\n' || c == '\t')
            state = OUT;
        else if (state == OUT) {
            state = IN;
            printf(" ");
        }
        if (state == IN)
            putchar(c);
    }
    return 0;
}

#Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây :
#Thông tin về khóa học xem tại đây :

-Sự khác biệt giữa 2 khóa học cũ và mới :
+Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả.
+Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại… Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.

2 Likes
#include<stdio.h>
int main()
{
    int nchar=0,nword=0,nline=0,state=0;
    char c;
    while((c=getchar())!=EOF)
    {
        nchar++;
        switch(c)
        {
        case '\n':
            nline++;
            state=0;
            break;
        case ' ':
        case '\t':
            state=0;
            break;
deafault:
            if(state==0)
            {
                state=1;
                nword++;
            }
        }
    }
    printf("char\tword\tline\n");
    printf("%d\t%d\t%d",nchar,nword,nline);
    return 0;
}

Mới nghĩ ra, nhờ mọi người fix lại giúp mình. Thank you vì đã đọc bài viết của mình.

3 Likes

Hình như chỉ sai mỗi chỗ này thôi @14520054 à.

Sửa lại thành

default:

P/S: Với lại thấy @14520054 code không có hàng lối gì hết trơn, thử dùng chức năng sắp xếp code lại nhìn cho đẹp đi

3 Likes

ok. em sẽ lưu ý cái này, do làm biến qua nên hay bỏ qua.

2 Likes

Code gọn gàng sẽ ít lỗi hơn đấy @14520054 :smile:

2 Likes

hay đó bài viết bày được đó

1 Like

Bài em làm như dưới có đúng ko anh ?

#include <stdio.h>
#define IN 1 /* ben trong 1 tu */
#define OUT 0 /* ben ngoai 1 tu */

int main()
{
    int c, nline, nword, nchar, state;
    state = OUT;
    nline = nword = nchar = 0;
    while ((c = getchar()) != EOF)
    {
        ++nchar;
        if (c == '\n')
            ++nline;
        if (c == ' ' || c == '\t' || c == '\n' || c == ',' || c == '.' || c == '!')
            state = OUT;
        else if(state == OUT)
        {
            state = IN;
            ++nword;
        }
    }
    printf("so luong ky tu la %d, so luong dong la %d, so luong tu la %d", nchar, nline, nword);
    return 0;
}
1 Like

Trông có vẻ ổn, em chạy thử thấy đúng không? Tại giờ anh không có điều kiện test thử :smile:

Em chạy thử thấy đúng anh ạ.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.

đã xong :slight_smile:
anh chỉ e có cách nào để gọp 2 lần chạy for lại được ko anh?
#include <stdio.h>
#include <stdlib.h>
#define OUT 0
#define IN 1
int main()
{
int nline,nchar,nword,c;
char i,check=0,state;
state=OUT;
nline=nchar=nword=0;
while((c=getchar())!=EOF)
{
++nchar; check = 0;
if (c==’\n’) ++nline;
for (i=65;i<=90;i++)
if (c==i)//neu c la chu cai in hoa
{
check=1; break;
}
if (check==0)
for (i=97;i<=122;i++)
if (c==i)//chu cai thuong
{
check=1;
break;
}
if(check ==0) state=OUT;
else if (state==OUT)
{
++nword;
state=IN;
}
}
printf("char= %d line= %d word= %d ",nchar,nline,nword);
return 0;
}

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?