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

c
video

(Lê Trần Đạt) #1
#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.


tìm từ có xuất hiện trong file hay không?
Tổng hợp các video hướng dẫn lập trình C của Lê Trần Đạt
(BaoLe) #2
#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.


(Lê Trần Đạt) #3

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


(BaoLe) #4

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


(Lê Trần Đạt) #5

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


(tranquocanh) #7

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


(Dao Trong Bach) #8

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;
}

(Lê Trần Đạt) #9

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:


(Dao Trong Bach) #10

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


(Lê Trần Đạt) #11

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


(Lê Trần Đạt) #12

(Thức Lê) #14

đã 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?