Giúp em bài C/C++ Với ạ

Viết hàm tìm kiếm xem ký tự nào xuất hiện nhiều nhất trong chuỗi. Viết chương trình nhập vào một chuỗi bất lỳ, gọi hàm trên và in ra kết quả
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
Ý tưởng của thuật toán như sau, còn cách thức viết hàm và các câu lệnh thì bạn phải tự đọc sách thì mới tự làm và hiểu được
[AH]Tạo 2 mảng 1 chiều, 1 mảng gồm các kí tự phân biệt có xuất hiện trong chuỗi nhập vào, mảng 2 là mảng các số nguyên tương ứng với số lượng của các kí tự đó trong chuỗi

*Công đoạn thứ nhất: tìm ra các kí tự phân biệt của chuỗi ban đầu, gán vào mảng 1
-B1: gán kí tự đầu tiên của chuỗi vào vị trí thứ nhất của mảng 1 (gọi là khởi tạo giá trị ban đầu), độ dài mảng 1 lúc này bằng 1
-B2: từ kí tự thứ 2 trở đi phải duyệt từ đầu đến cuối mảng 1 xem có trùng hay không
Nếu có trùng thì next sang kí tự tiếp theo của chuỗi
Nếu không trùng với bất kỳ phần từ nào đã có của mảng 1, tức là kí tự mới => gán thêm vào cuối mảng 1, tăng độ dài của mảng 1 lên 1 đơn vị
*Công đoạn 2 (B3): đếm số lượng của từng kí tự đã tìm được ở mảng 1, xuất hiện trong chuỗi, gán giá trị vào mảng 2
*Công đoạn 3 (B4): tìm max trong mảng 2 => xuất kết quả

Ví dụ minh hoạ cho dễ tưởng tượng
Chuỗi nhập vào: amnttabttcc
Tìm được
Mảng 1amntbc
Mảng 2211412

Kết quả: Kí tự t xuất hiện nhiều nhất với 4 lần :)
[/AH]
 

taplamhacker

♥ Thanh Trâm ♥
đây bạn
[AH]
Mã:
#include<stdio.h>
#include<string.h>
int main()
{
	char *a = new char;
	gets(a);
	char tmp;
	int demmax=0;;
	for(int i = 0 ; i < strlen(a) ; i ++)
	{
		int dem=1;
		for(int j = i+1 ; j <  strlen(a) ; j ++)
			if(*(a+i) == *(a+j))
				dem++;	
		if(dem >= demmax)
		{
			tmp = *(a+i);
			demmax=dem;
		}	
	}
	printf("%c %d",tmp,demmax);
}
[/AH]
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
đây bạn
[AH]
Mã:
#include<stdio.h>
#include<string.h>
int main()
{
    char *a = new char;
    gets(a);
    char tmp;
    int demmax=0;;
    for(int i = 0 ; i < strlen(a) ; i ++)
    {
        int dem=1;
        for(int j = i+1 ; j <  strlen(a) ; j ++)
            if(*(a+i) == *(a+j))
                dem++;    
        if(dem >= demmax)
        {
            tmp = *(a+i);
            demmax=dem;
        }    
    }
    printf("%c %d",tmp,demmax);
}
[/AH]
Bài này sai là cái chắc :troll:
Ý tưởng của taplamhacker như sau: Duyệt từng phần tử của chuỗi, đếm xem ký tự đó xuất hiện bao nhiêu lần trong chuỗi, so sánh với demmax để tìm ra số lượng lớn nhất. Nhưng thuật toán này chỉ đếm từ kí tự đó đến cuối mà thôi
i từ 1 đến hết
j từ i+1 đến hết

for(int j = i+1 ; j < strlen(a) ; j ++)
 

Joinal457

Phang bừa :v
Không nên cho bạn ý ăn sẵn thế Ku Anh ợ

:waaaht: xin lỗi cho mình ngoài lề tí. xin cảm ơn :D


Cô rái vĩnh long xinh đẹp này nhà ở đâu ?, tên gì ? cho anh làm quen được hơm ?, cảm xúc trong anh tràn dâng thì thấy cái Avata của em , cô rái IT :troll2:
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
:waaaht: xin lỗi cho mình ngoài lề tí. xin cảm ơn :D


Cô rái vĩnh long xinh đẹp này nhà ở đâu ?, tên gì ? cho anh làm quen được hơm ?, cảm xúc trong anh tràn dâng thì thấy cái Avata của em , cô rái IT :troll2:
Thông tin trong Info có hết rùi đó, có yêu cầu thêm gì thì em cung cấp cho :x
 

Joinal457

Phang bừa :v
Thông tin trong Info có hết rùi đó, có yêu cầu thêm gì thì em cung cấp cho :x

được thì anh hỏi ba mẹ đem trâu cào......... à không :) đem cao trầu sang hỏi cưới, câu hỏi tế nhị tí..............Em làm nghề XXX được bao lâu rồi và giá mỗi lần đi là bao nhiêu có thể cho anh cái giá được không :troll2:
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
được thì anh hỏi ba mẹ đem trâu cào......... à không :) đem cao trầu sang hỏi cưới, câu hỏi tế nhị tí..............Em làm nghề CODE được bao lâu rồi và giá mỗi lần CODE là bao nhiêu có thể cho anh cái giá được không :troll2:
Anh thật biết đùa, có mỗi cái avatar mà đoán ra được nghề của em luôn à
yy04.gif
 

taplamhacker

♥ Thanh Trâm ♥
Bài này sai là cái chắc :troll:
Ý tưởng của taplamhacker như sau: Duyệt từng phần tử của chuỗi, đếm xem ký tự đó xuất hiện bao nhiêu lần trong chuỗi, so sánh với demmax để tìm ra số lượng lớn nhất. Nhưng thuật toán này chỉ đếm từ kí tự đó đến cuối mà thôi
i từ 1 đến hết
j từ i+1 đến hết
@@ a thử cho e 1 cái test nó sai đi @@
 

Ngọc Huyền1

Công Chúa Nhỏ
Bài này sai là cái chắc
:troll:
Ý tưởng của taplamhacker như sau: Duyệt từng phần tử của chuỗi, đếm xem ký tự đó xuất hiện bao nhiêu lần trong chuỗi, so sánh với demmax để tìm ra số lượng lớn nhất. Nhưng thuật toán này chỉ đếm từ kí tự đó đến cuối mà thôi
i từ 1 đến hết
j từ i+1 đến hết

@@ a thử cho e 1 cái test nó sai đi @@
Em yêu làm đúng rồi .
Chắc Em yêu Vforum nhầm cái i chạy từ 0 thì j < strlen()
còn i chạy từ 1 thì j <= strlen()
:chemgio:
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
Đã test lại bài của taplamhacker, đúng là bài của bạn làm đúng rồi
Trùm code C của diễn đàn có khác :troll:
 
Top