ôi, thuật toán quen thuộc năm xưa, cũng lấy giá trị cần đếm làm chỉ số.
nhưng năm xưa là pascal, năm nay là C…
nhớ cấp 3 quá a ạ.
Đếm số lần xuất hiện của chữ cái trong chuỗi bằng C
Chữ hoa thì sao???
Runtime error: index <0
Cố tình đấy
Người thảo luận để tìm ra cách giải hay cho một bài toán khó sẽ trở thành lập trình viên giỏi. Người hay hỏi bài tập thì không. Còn bạn thì sao?
Đưa ra hết thì bạn @nhu71958 sẽ lười suy nghĩ. Chỉ đưa ra hướng giải quyết thôi.
Nhìn thấy kí tự space trong code là lỗi rồi =))
e nghĩ là khai báo count[122] là ổn ạ.
#32 trong chuỗi tên đấy!
Mình viết nhầm
Còn nhiều vấn đề nữa @htwap, ví dụ chữ thường thì - ‘a’ nhưng chữ hoa phải -‘A’. Cái này kiểm tra 1 cái được ngay sử dụng isalpha
, islower
, isupper
là được.
sử dụng isalpha
, islower
, isupper
là được.
Ở đây anh chỉ đưa ra hướng giải quyết thôi, anh không làm hết tất cả.
@nhu71958 em nắm được cách giải quyết không?
e sửa lại code của a chút xíu này.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *s = "Sang Coi Coc";
int count[122] = {0};
int n=strlen(s);
for(int i=0;i<n;i++){
if(!count[s[i]]){
count[s[i]]=1;
for(int j=i+1;j<n;j++)
if(s[j]==s[i])
count[s[i]]++;
}
}
for(int i=65;i<122;i++)
if(count[i])
printf("%c %d\n",i,count[i]);
return 0;
}
chạy đúng mà a.
=== này thì 20 này ===
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
const char * s = "Le Tran Dat - Tu Hoc Lap Trinh - daynhauhoc.com";
#define NUM_CHAR 122
int count[NUM_CHAR] = {0};
int i;
for(i = 0; i < strlen(s); ++i)
if (isalpha(s[i]))
count[s[i] - 'A']++;
for(i = 'A'; i < NUM_CHAR; ++i)
if(count[i])
printf("%c %d\n", i+'A', count[i]);
return 0;
}
uk…vâng…e cảm ơn m.n
Hi @nhu71958, em giải quyết được không? nếu em hiểu thì tốt, còn không thì anh sẽ giải thích theo hướng C#. Vì các bạn đi xa sang lĩnh vực C quá.
ko hiểu lắm a à…hơi bị rối…có lẽ a giải thích giùm e theo hướng c# thì tốt hơn
Cứ fill cho nó mảng 255 phần tử, sao các bạn tiết kiệm vậy nhỉ =))
vậy ta có thể dùng trường hợp + 32 nữa là chữ hoa ko anh?
a ơi cho e hỏi là tại sao s[i] - ‘a’ nhỉ
Cho em hỏi lệnh:
count[s[i] - 'a']++;
có nghĩa là gì ạ.
Do:
'a'
ứng với slot 0
'b'
ứng với slot 1
…
'z'
ứng với slot 25
mà 'a'
đến 'z'
thực ra là dãy số (ASCII code)