14.05.2016, 13:02
общий
это ответ
Здравствуйте, user8351!
Посмотрите, как я сделал.
Комментарии не писал. Мне кажется, что Вы и сами разберетесь...
Впрочем, если будут вопросы - милости просим в мини-форум...
[code h=200]
/*
Нужно написать функцию SortIndex(A, N),
формирующую для вещественного массива A размера N
массив указателей на элементы массива A в том порядке,
который соответствует возрастанию элементов массива A
(сам массив A при этом не изменяется).
Массив указателей является выходным параметром.
С помощью этой функции создать массивы указателей
для массивов A, B, C размера NA, NB, NC соответственно.
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
///SortIndex(float A,int N);
int* SortIndex(double *A,int N)
{
int* cpy = new int[N];
int i, j;
double temp;
for (i=0;i<N;i++)
cpy[i] = i;
for (i=0;i<N-1;i++)
for (j=i;j<N;j++)
{
if (A[cpy[i]] > A[cpy[j]])
{
temp = cpy[i];
cpy[i]] = cpy[j];
cpy[j] = temp;
}
}
return cpy;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int i,NA, NB, NC;
printf ("Введите NA: ");
scanf ("%d",&NA);
double* A = new double[NA];
printf("Массив A:\n");
for (i=0;i<NA;i++)
{
printf ("A[%d]=",i);
scanf ("%lg",&A[i]);
}
for (i=0;i<NA;i++)
{
printf ("A[%d]=%.2f ",i,A[i]);
}
printf ("\nВведите NB: ");
scanf ("%d",&NB);
double* B = new double[NB];
printf("Массив B:\n");
for (i=0;i<NB;i++)
{
printf ("B[%d]=",i);
scanf ("%lg",&B[i]);
}
for (i=0;i<NB;i++)
{
printf ("B[%d]=%.2f ",i,B[i]);
}
printf ("\nВведите NC: ");
scanf ("%d",&NC);
double* C = new double[NC];
printf("Массив C:\n");
for (i=0;i<NC;i++)
{
printf ("C[%d]=",i);
scanf ("%lg",&C[i]);
}
for (i=0;i<NC;i++)
{
printf ("C[%d]=%.2f ",i,C[i]);
}
int *iA = SortIndex(A,NA);
int *iB = SortIndex(B,NB);
int *iC = SortIndex(C,NC);
printf("\n\nОтсортированные массивы:\nA:");
for (i=0;i<NA;i++)
printf ("%.2f ",A[iA[i]]);
printf("\nB:");
for (i=0;i<NB;i++)
printf ("%.2f ",B[iB[i]]);
printf("\nC:");
for (i=0;i<NC;i++)
printf ("%.2f ",C[iC[i]]);
printf("\n");
delete [] A;
delete [] B;
delete [] C;
delete [] iA;
delete [] iB;
delete [] iC;
system("pause");
return 0;
}
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен