Em có bài tập mảng 1 chiều.
Nhập vào 1 mảng gồm n phần tử. Xuất ra số lần xuất hiện của các phần tử trong mảng. Và tìm phần tử nào xuất hiện nhiều nhất, và ít nhất
Cho em ý tưởng cái
Em có bài tập mảng 1 chiều.
Nhập vào 1 mảng gồm n phần tử. Xuất ra số lần xuất hiện của các phần tử trong mảng. Và tìm phần tử nào xuất hiện nhiều nhất, và ít nhất
Cho em ý tưởng cái
#include <iostream>
using namespace std;
std::pair<int,int> find_max_frequency(int* a,int n) {
int temp[n];
for(int i = 0; i < n; i++)
temp[i] = 1;
int max = 1,max_index = 0;
for(int i = 1; i < n; i++) {
for(int j = 0; j < i; j++) {
if(a[i] == a[j]) {
temp[i] = temp[j]+1;
if(max < temp[i]) {
max_index = i;
max = temp[i];
}
}
}
}
return {a[max_index],max};
}
int main() {
int a[] = { 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5 };
int n = sizeof(a)/sizeof(a[0]);
std::pair<int,int> m = find_max_frequency(a,n);
cout << "Element and frequency: ";
cout << m.first << " " << m.second << endl;
return 0;
}
Cũng chưa test, chắc là có sai, tí nữa về test lại sau.
Có nhiều cách. Bày cho 1 ý tưởng cơ bản:
trong diễn đàn có bài này rồi mà
@Htc cho luôn cái link đi để @Kelvin_Nguy_n vào xem. Sau này hi vọng sẽ có cơ chế thông báo có bài trùng do thành viên phát hiện. Khi phát hiện ra bài trùng thì mình thông báo thông qua chức năng đó.
int demphantu(int a[],int n)
{
int dem=1;
for(int i=0;i<n;i++)
{
if(a[i]=a[i+1])
{
dem++;
}
else
{
return dem;
}
printf("\nPhan tu a[%d] xuat hien %d lan",i,dem);
}
}
Sai chổ nào mọi người
cái dòng này loàng ngoàng vậy ?
nhìn vào if đã thấy sai :trollface:
cái if nó luôn là true
Lần đầu mong mọi người góp ý ạ
#include <stdio.h>
void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void nhapham(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("the value of A[%d]= ", i + 1);
scanf("%d", &a[i]);
}
}
int main(void)
{
int n;
int a[20];
printf("so luong:\n");
scanf("%d", &n);
nhapham(a, n);
for (int i = 0; i <n; i++)
{
for (int j = i + 1; j < n; j++)
if (a[i]<a[j])
swap(&a[i], &a[j]);
}
int chuan = a[0];
int count = 0;
for (int i = 0; i < n; i++)
{
if (a[i]==chuan)
{
count++;
}
if (chuan!=a[i])
{
printf("the %d appear %d times\n", a[i - 1], count);
chuan = a[i];
count = 1;
}
if (i==n-1)
{
printf("the %d appear %d times\n", a[i], count);
}
}
return 0;
}
sao bạn không đặt thêm 1 mảng nx?
cho là:
cin>>z[i];
lap[z[i]]++;
lap là mảng thứ 2 đó