Liệt kê tần suất xuất hiện của các phần tử

Mọi người ơi em đang có bài toán: Liệt kê tần suất xuất hiện của các phần tử. Nhưng khi debug thì nó báo lỗi!

Đây là bài code của em:
Cái này em tự mò nên không biết đúng sai chỗ nào mong mn chỉ em nên sửa chỗ nào! Cảm ơn mn!!!

#include <iostream>
using namespace std;

void NhapMang(int a[], int n);
void XuatMang(int a[], int n);
void Dem(int a[], int n);

int main()
{
	int a[1000], n;
	cout << "Nhap so phan tu co trong mang :"; cin >> n;
	NhapMang(a, n);
	XuatMang(a, n);
	Dem(a, n);
	return 0;
}

// Nhap va xuat mang !!!

void NhapMang(int a[], int n)
{
	for (int i = 0; i < n; i++)
	{
		cout << "Nhap phan tu a[" << i << "]";
		cin >> a[i];
	}
}
void XuatMang(int a[], int n)
{
	for (int i = 0; i < n; i++)
	{
		cout << a[i] << " ";
	}
}

// Ham dem so lan xuat hien!

void Dem(int a[], int n)
{
	int max = 1e6;
	int dem [1000];
	for (int i = 0; i < max; i++)
	{
		dem[i] = 0;
		for (int i = 0; i < n; i++)
		{
			dem[a[i]]++;
		}
	}
	for (int i = 0; i < max; i++) 
	{
		if (dem[i] > 0)
		{
			cout << "Phan tu" << i << "co tan suat xuat hien " << dem[i] << " lan!" << endl;
		}
	}
}

Lỗi gì thế ạ?

code này bị sai nha cậu, cậu chỉ restart lần lượt từng giá trị phần tử trong mảng dem về 0 chỉ 1 lần, nên những lần lặp về sau thì các phần tử dem ở trước đó sẽ ko bị restart về giá trị 0 mà nó cứ tăng theo cấp số nhân của mỗi lần lặp

2 Likes

Cảm ơn bạn đã giúp đỡ!!!

Cảm ơn bạn nhiều nha mình sẽ thử sữa lại!!!

Nó như z nè bạn

Cái này bạn làm ngược, khởi tạo xong thì duyệt mảng rồi thêm dựa vào giá trị thôi.

3 Likes

cảm ơn bạn, mình đã sữa được rồi!!!

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