Thay đổi thuật toán nổi bọt nên giờ nó lại sắp xếp sai số 0. (chiều hướng tăng dần)
Ngồi tìm mãi ko hiểu nhầm chỗ nào, mời các chuyên gia vào trợ giúp. Trước có bác chỉ dấu == thì fix ok rồi
#include<iostream>
using namespace std;
int kiemtraTt(int s,int n,int a[30]){
for(int i=0;i<n;i++){
if(s==a[i]){
return i;
break;
}
}
return 0;
}
bool kiemtraSo(int s, int t, int c[30]){
for(int i=t-1;i>=0;i--){
if(s==c[i]){
return false;
break;
}
}
return true;
}
int dem(int t,int n,int a[20]){
int k=0;
for (int i=0;i<n;i++){
if(a[i]==t){
k++;
}
}
return k;
}
int main(){
int n;
cin >> n;
int a[30];
int b[30];
for(int i=0;i<n;i++){
cin >> a[i];
}
for(int i=0;i<n;i++){
b[i]=dem(a[i],n,a);
}
int c[30];
c[0]=a[0];
int t=1;
//kiểm tra lặp và đưa ra mảng mới không trùng lặp
for(int i=1;i<n;i++){
bool kiemtra=kiemtraSo(a[i],t,c);
if(kiemtra==true){
c[t]=a[i];
t++;
}
}
// sắp xếp phần tử của mảng mới
for(int i=0;i<t-1;i++){
for(int j=0; j<t-i-1;i++){
if(c[j]>c[j+1]){
int tam = c[j];
c[j] = c[j+1];
c[j+1] = tam;
}
}
}
int d[t];
// tạo mảng ghi dữ liệu lặp theo thứ tự của mảng mới
for(int i=0;i<t;i++){
int kiemtra2=kiemtraTt(c[i],n,a);
d[i]=b[kiemtra2];
}
for(int i=0;i<t;i++){
cout << c[i] << " - " << d[i] <<"; ";
}
return 0;
}
(số - lần lặp)
kết quả đúng: 0 - 1; 1 - 1; 4 - 2