Tìm số có lần lặp nhiều nhất trong mảng

em viết code xong nhưng chạy không được , không biết bị lỗi gì nữa

#include<stdio.h>
 
void nhapMang(int a[],int &n)
{
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
}
 
int a[1000000],b[1000000]={0};
int main()
{
	int a[1000000],n,m,p;
	scanf("%d",&p);
	while(p--)
	{
		nhapMang(a,n);
		b[1000000]={0};		
		for(int i=0;i<n;i++)
		{
			b[a[i]]++;
		}
		int max=b[a[0]];
		for(int i=1;i<n;i++)
		{
			if(b[a[i]]>max) max = b[a[i]];
		}
		if(max==1)printf("NO\n");
		else
		{
			for(int i=1;i<n;i++)
			{
				if(b[a[i]]==max)
				{
					printf("%d\n",a[i]);
					break;
				}
			}
		}
	}
}

Dòng này trong for là mất sạch giá trị rồi.

2 Likes

Code sai nhiều chỗ quá

  1. khởi tạo 2 mảng bên ngoài hàm main rồi thì trong main ko được khởi tạo lại ở trong vòng while đi => chương trình chết
  2. n ở hàm nhapMang phải là giá trị n chứ không phải &n(địa chỉ)
  3. n trong các vòng for ở trong while chưa được khởi tạo giá trị => chương trình chết, nên khai báo n là biến toàn cục để đỡ phải truyền vào hàm
1 Like

thanks mấy anh em sửa lại chạy được rôi …:smiley:

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