Пояснить код формирования массива из элементов двух других - 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"; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д