30/09/2018, 18:40

Bài tập C cần giúp đỡ ạ

Bài tập của e như này ạ, e vắt óc suy nghĩ vận dụng, nhưng bây giờ dừng chân được ở mức lấy ra được 1 cái array có sắp xếp các từ nhưng vẫn có từ lặp :’(

Phạm Đại Nghĩa viết 20:53 ngày 30/09/2018

Bạn thử dùng kiểu dữ liệu set trong C xem. Khi có unique list rồi thì mới bắt đầu sort.

Kyo Hoài Bắc viết 20:43 ngày 30/09/2018

Set thì nó sẽ không bị lặp phần tử đúng không, để mình tìm hiểu

Nguyen Ca viết 20:44 ngày 30/09/2018

đây là bài “word count” kinh điển :D, đi phỏng vấn mấy lần điêu bắt code cài này

Kyo Hoài Bắc viết 20:51 ngày 30/09/2018

oh :’( e loay hoay cả tối qua chưa làm được

Nguyen Ca viết 20:49 ngày 30/09/2018

Nếu đã sắp xếp thì em có thể làm như sau:
anh viết mã giả

c=  s[0];
count = 1;
for(int i = 1; i< s.length;i++){
 if(c!= s[i]) {
   //output c , count
   //------------------------
   // reset 
   c= s[i];
   count =1;
 } else {
   count ++;
 }
}
Kyo Hoài Bắc viết 20:56 ngày 30/09/2018

Đọc cái cái gợi ý mình chợt nghĩ ra cách làm luôn, tạo 1 cái array có tất cả các chữ cái, sau đó đếm là được

Phạm Đại Nghĩa viết 20:41 ngày 30/09/2018

Đúng e, set không lưu phần từ giống nhau, có thể khi e sort xong, đọc lại phần tử của sorted array rồi đếm xem với một phần từ xuất hiện bao nhiêu lần ở string gốc.

Gió viết 20:42 ngày 30/09/2018

Dùng mảng đếm số lần xuất hiện từng kí tự luôn

int cnt[256];
memset(cnt,sizeof (cnt),0);
for(int i=0; i< strlen(s);i++) 
     if(isalnum(s[i])) cnt[tolower(s[i])]++;

// Ouput
for(int i=0; i<256;i++) 
     if(cnt[i]) printf("%c %d\n",i,cnt[i]);
nhatlonggunz viết 20:53 ngày 30/09/2018

Em thấy làm giống anh @Gio là tốt rồi.

Sao phải dùng đến set, rồi sort này nọ chi vậy nhỉ.

Bài liên quan
0