viết bằng C++ đc ko ạ?
Đếm số lần xuất hiện của chữ cái trong chuỗi bằng C
Được, sau đó chuyển sang C# là xong.
thế tối e thử viết bằng C++.
mà a hướng dẫn làm việc với file bằng ngôn ngũ C đi a. tuần sau bọn e chữa bài tập mà bầy giờ e cứ làm xong rồi test lại ra kết quả linh tinh ạ.
À, tự dưng anh nghĩ nhớ ra cái này, anh viết bằng C. Em biết C không?
Code mới ở đây
#include <stdio.h>
#include <stdlib.h>
int main()
{
char * s = "le tran dat";
int count[26] = {0};
int i;
for(i = 0; i < 26; ++i)
count[s[i] - 'a']++;
for(i = 0; i < 26; ++i)
if(count[i])
printf("%c %d\n", i+'a', count[i]);
return 0;
}
ô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 ạ.
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ỉ =))