Пояснить код формирования массива из элементов двух других - 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";
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.545 из 5
Похожие ответы