Hỏi về 1 đoạn code đếm số lần xuất hiện các kí tự trong xâu có phân biệt chữ hoa chữ thường

Đây là code C đếm số lần xuất hiện các kí tự trong xâu có phân biệt chữ hoa chữ thường do em viết nhưng em không biết sao các bộ test có chữ b ở đầu(ví dụ: bbbbb aaaa; bbbbb; bbb c...) trả về kết quả bị mất chữ b trong khi các bộ khác em thử đều được. Các anh chỉ dạy em với ạ. Em cảm ơn ạ.

#include <stdio.h>
#include<stdbool.h>

bool xuathien(const char x,const char*dc){
	int j=0;
	while(dc[j]!='\0'){
			if(x==dc[j]||(int) x==32){
				return 1;
			}
			j++;
		};
	return 0;
}
	

int main(){
	int i=0,index=0;
	char arr[1000];
	char dc[1000];
	int solan[1000];
	gets(arr);
	while(arr[i]!='\0'){//tim trong mang arr
		if(	xuathien(arr[i],dc)==0 ){//neu arr[i] chua xuat hien
			int dem=0;//lam moi dem
			int k=0;//lam moi k
			dc[index]=arr[i];
			dc[index+1]='\0';//cat duoi
			while(arr[k]!='\0'){//tim trong mang arr de doi chieu
				if(arr[i]==arr[k]){
					dem++;
				}
				k++;
			}
			solan[index]=dem;
			index++;
		}
		i++;
		}
	 for(i=0;i<index;i++){
	 	printf("%c : ",dc[i]);
	 	printf("%d\n",solan[i]);
	 }
	  return 0;
}

Bài này thì bảng tần suất thôi bạn.

3 Likes

Anh có thể cho em xin code mẫu đc ko ạ. Em mới tự học lập trình nên cũng ko biết bảng tần suất là sao
Code của em em đã fix đc bằng các gán dc[0]=’\0’ nhưng ko biết sao ban đầu lại ko đc
liệu có phải kí tự mặc định đầu tiên của 1 mảng char ko đc gán các giá trị là ‘b’ hay sao ạ

Bảng tần suất trong toán xác suất thống kê đấy em ơi, có từ hồi lớp 7 rồi :rofl:.

Code mẫu ở đầy trên mạng rồi, cần chi xin? Có cần anh đưa link không?

1 Like

vậy là bảng tần suất là kiến thức toán ạ
Em lại cứ tưởng là cái gì trong C :man_facepalming: :man_facepalming: :man_facepalming: :man_facepalming:
nhưng cái code của em tại sao em gán dc[0] = ‘\0’ thì kí tự ‘b’ không bị mất mà nếu ko gán thì kí tự b sẽ bị mất ạ. Cái này em thấy lạ.

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