01/10/2018, 08:32
Giúp đỡ bài thống kê tần suất xuất hiện phần tử trong mảng 1 chiều
Đề bài: Thống kê tần suất xuất hiện của các phần tử trong mảng 1 chiều? sao cho các giá trị xuất hiện 1 lần.hỏi : sao giá trị 3 xuất hiện 2 lần, giá trị 2 lập lại
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void nhap(int *(*a),int *n)
{
int i;
printf("nhap n:");
scanf("%d",n);
*a = (int *) malloc((*n) * sizeof(int));
for(i=0;i<*n;i++)
{
printf("a[%d]=",i);
scanf("%d",(*a+i));
}
}
int demx(int x,int *a,int n)
{
int i;
printf("nhap vao x:");
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(*(a+i)==x)
printf("phan tu trung la %d
",*(a+i));
}
return *(a+i);
}
void inthongke(int *a,int n)
{
int i,j;
int dem=1;
for(i=0;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(*(a+i)==*(a+j))
dem=dem++;
}
printf("%d xuat hien %d lan
",*(a+i),dem);
}
}
int main()
{
int *a;
int n;
int i;
int x;
nhap(&a,&n);
demx(x,a,n);
inthongke(a,n);
return 0;
}

Bài liên quan
Săp xêp mảng tăng dần hoặc giảm dần
tăng biến đếm trong khi a[i]==a[i+1]. ngươc lại reset biến đếm và đếm cho số tiếp theo.
cho biến đếm vào trong vòng lặp for thứ nhất.
mà đoạn đó nên sửa lại như sau:
for (i = 0;i < n;i++)
{
dem = 0;
for (j = 0;j < n;j++)
{
if (a[i] == a[j])
{
dem++;
}
}
printf("%d xuat hien %d lan\n ", a[i], dem);
http://pastebin.com/2imLtkgz
đây là bài mình code bằng array, gần giống bài đó
Thớt cũng code tựa tựa vậy.
mình sửa lại như sau các bạn cho xin ý kiến
Bạn có thể dùng map với key là số và value là tần suất xuất hiện của số đó trong mảng.
C không có map bạn
Một cách làm khác
Mảng nó 100 thật thì sao
</thread>