Пояснить код формирования массива из элементов двух других - C (СИ)
Формулировка задачи:
Описать процедуру SortIndex(A, N, I), формирующую для веществен¬ного массива A размера N индексный массив I — массив целых чисел того же размера, содержащий номера элементов массива A в том порядке, который соответствует возрастанию элементов массива A (сам массив A при этом не изменяется). Индексный массив I является выходным параметром. С помощью этой процедуры создать индексные массивы для массивов A, B, C размера NA, NB, NC соответственно.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int *I;
int SortIndex(float *x,int N,int *index)
{
float *k,buf_mas;
int d,buf_ind,j;
k=(float*)malloc(N*sizeof(float));
index=(int*)malloc(N*sizeof(int));
for(j=0;j<N;j++)
{
k[j] = x[j];
index[j]= j+1;
}
for(d=0;d<N;d++)
{
for(j=1;j<N;j++)
{
if (k[j] < k[j-1])
{
buf_mas = k[j];
k[j] = k[j-1];
k[j-1] = buf_mas;
buf_ind = index[j];
index[j] = index[j-1];
index[j-1] = buf_ind;
}
}
}
for(j=0;j<N;j++)
{ I[j] = index[j];}
return 0;
}
int main()
{ float *a,*b,*c;
int m,n,i,f,p,h=10;
//выделение памяти
printf("Vvedite razmer 1 mas\n");
scanf("%d",&m);
a=(float*)malloc(m*sizeof(float));
I=(int*)malloc(m*sizeof(int));
for(i=0;i<m;i++)
{a[i] = rand()%h-0.2;}
f = SortIndex(a,m,I);
for(i=0;i<m;i++)
{
printf("%4.1f",a[i]);
}puts("\n");
for(i=0;i<m;i++)
{
printf("%4i",I[i]);
}
puts("\n");
printf("Vvedite razmer 2 mas\n");
scanf("%d",&n);
b=(float*)malloc(n*sizeof(float));
I=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{b[i] = rand()%h-0.3;}
f = SortIndex(b,n,I);
for(i=0;i<n;i++)
{
printf("%4.1f",b[i]);
}puts("\n");
for(i=0;i<n;i++)
{
printf("%4d",I[i]);
}
puts("\n");
printf("Vvedite razmer 3 mas\n");
scanf("%d",&p);
c=(float*)malloc(p*sizeof(float));
I=(int*)malloc(p*sizeof(int));
for(i=0;i<p;i++)
{c[i] = rand()%h-0.4;}
f = SortIndex(c,p,I);
for(i=0;i<p;i++)
{
printf("%4.1f",c[i]);
}puts("\n");
for(i=0;i<p;i++)
{
printf("%4d",I[i]);
}
puts("\n");
getchar();
getchar();
return 0;
}Решение задачи: «Пояснить код формирования массива из элементов двух других»
textual
Листинг программы
int main(){
std::cout<<"Hello\n";
}