#c
#c
Вопрос:
Я хотел бы отсортировать массив с плавающей точкой, используя пузырьковую сортировку в C. Я бы хотел, чтобы эта функция возвращала этот отсортированный массив и присваивалась моей переменной testSorted. Однако, когда я печатаю testSorted, результат равен 0.0000. Может кто-нибудь, пожалуйста, помочь здесь?
float * bubbleSort(float statsArray[], int n){
float swap;
for ( int a = 0; a < n-1; a )
{
for (int b = 0; b < n - a - 1; b )
{
if (statsArray[b] < statsArray[b 1])
{
swap = statsArray[b];
statsArray[b] = statsArray[b 1];
statsArray[b 1] = swap;
}
}
}
return statsArray;
}
void main() {
float test[SIZE] = { 34, 201, 190, 154, 8, 194, 2, 6,
114, 88, 45, 76, 123, 87, 25, 23,
200, 122, 150, 90, 92, 87, 177, 244,
201, 6, 12, 60, 8, 2, 5, 67,
7, 87, 250, 230, 99, 3, 100, 90};
/* Variable Declarations */
float average;
float * testSorted;
int p;
float maximum, minimum;
p = 40;
testSorted = bubbleSort(test, p);
printf(testSorted);
return 0;
}
Комментарии:
1. Вы не можете просто
printf(float_array)
. Вам следует подумать о написании цикла для печати элементов по отдельности с%f
заполнителем в формате2. Что еще вы ожидали от печати?
Ответ №1:
printf(testSorted);
довольно нарушена, потому что первый аргумент printf должен быть указателем на строку char *
формата, а не массив с плавающей точкой.
Вместо этого, чтобы распечатать массив, вам нужно сделать что-то вроде следующего:
printf("{ ");
for (int a = 0; a < SIZE; a ) {
printf("%f ", test[a]);
}
printf("}");