Tôi nghĩ rằng chúng ta có thể giải quyết vấn đề này mà không cần dùng vector. Tôi là người mới, thành thật mà nói, tôi không hiểu những gì bạn đã viết ở trên, và tất cả các bạn đã sử dụng véc tơ mà tôi sẽ học sau :)) (Tôi lười) Đây là cách của tôi:
// thứ nhất, mảng sao chép một [] để mảng b []
void copyarray(double b[],double a[],int n){
for(int i=0;i<n;i++)b[i]=a[i];
}
// thứ hai, sắp xếp mảng a [] (giảm)
/* thứ ba, "sorter" mảng a [], mà có nghĩa là: trong mảng a [], nếu có cùng giá trị, chúng sẽ hợp nhất thành một giá trị! tôi sẽ thiết lập mảng o [] là "mảng được sắp xếp một []" */
void sorter(double o[],double a[],int n,int &dem){
int i;
o[0]=a[0];
for(i=1;i<n;i++){
if(a[i]!=a[i-1]){
dem++; o[dem]=a[i];
}
}
dem++;
}
/* 4, mục tiêu chính của chúng tôi: có được các chỉ số: tôi sẽ đưa các chỉ số vào mảng c [] */
void index_sort(double o[],double b[], double c[], int dem, int n){
int i,j,chiso=0;
for(j=0;j<dem;j++){
for(i=0;i<n;i++){
if(b[i]==o[j]){
c[chiso]=i;
chiso++;
}
}
}
}
// DONE!
int main(){
int n,dem=0;
double a[100],b[100],c[100],o[100];
cin>>n;
input(a,n);
copyarray(b,a,n);
copyarray(c,a,n);
sort(a,n);
sorter(o,a,n,dem);
index_sort(o,b,c,dem,n);
for(int i=0;i<n;i++) cout<<c[i]<<" ";
}
Tôi biết ai đó sẽ đặt câu hỏi này và đây không phải là bài tập về nhà. – q0987
Câu hỏi "này là một bài tập về nhà" hiếm khi được hỏi khi đại diện của OP trên 500 :-) – dasblinkenlight