30/09/2018, 16:12

Đếm số lần xuất hiện của chữ cái trong chuỗi bằng C

Làm thế nào để đếm số lần xuất hiện của chữ cái trong chuỗi vừa nhập?

viết bằng C++ đc ko ạ?

Nguyễn Minh Dũng viết 18:27 ngày 30/09/2018

Được, sau đó chuyển sang C# là xong.

Sáng Béo viết 18:24 ngày 30/09/2018

Đượ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 ạ.

Nguyễn Minh Dũng viết 18:27 ngày 30/09/2018

À, 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;
}
Sáng Béo viết 18:23 ngày 30/09/2018

À, tự dưng anh nghĩ ra cái này, anh viết bằng C. Em biết C không?

ô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 ạ.

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

Chữ hoa thì sao???
Runtime error: index <0

Nguyễn Minh Dũng viết 18:17 ngày 30/09/2018

Chữ hoa thì sao

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.

Gió viết 18:28 ngày 30/09/2018

Nhìn thấy kí tự space trong code là lỗi rồi =))

Nguyễn Minh Dũng viết 18:12 ngày 30/09/2018

kí tự backspace nào vậy @Gio ?

Sáng Béo viết 18:19 ngày 30/09/2018

Chữ hoa thì sao???

e nghĩ là khai báo count[122] là ổn ạ.

Gió viết 18:26 ngày 30/09/2018

#32 trong chuỗi tên đấy!
Mình viết nhầm

Nguyễn Minh Dũng viết 18:12 ngày 30/09/2018

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.

Nhìn thấy kí tự space trong code là lỗi rồi =))

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?

Sáng Béo viết 18:18 ngày 30/09/2018

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.

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;
}
Nguyễn Minh Dũng viết 18:15 ngày 30/09/2018

Đừng code kiểu này, dùng mấy cái hàm anh đề cập ở trên ấy

isalpha, islower, isupper

Sáng Béo viết 18:25 ngày 30/09/2018

Đừng code kiểu này, dùng mấy cái hàm anh đề cập ở trên ấy

isalpha, islower, isupper

chạy đúng mà a.
=== này thì 20 này ===

Nguyễn Minh Dũng viết 18:20 ngày 30/09/2018
#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;
}
nhu71958 viết 18:21 ngày 30/09/2018

uk…vâng…e cảm ơn m.n

Nguyễn Minh Dũng viết 18:13 ngày 30/09/2018

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á.

nhu71958 viết 18:20 ngày 30/09/2018

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

Quân viết 18:19 ngày 30/09/2018

Cứ fill cho nó mảng 255 phần tử, sao các bạn tiết kiệm vậy nhỉ =))

Thực tế khắc nghiệt viết 18:27 ngày 30/09/2018

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.

vậy ta có thể dùng trường hợp + 32 nữa là chữ hoa ko anh?

Bài liên quan
0