Я пытаюсь сделать алгоритм сортировки пузырьков.Однако при вводе некоторых чисел с плавающей точкой (тип double
) после десятичной точки исчезают цифры.
#include <stdio.h>
#include <stdbool.h>
void bubbleSort(double numbers[], int SIZE);
int main(int argc, char** argv)
{
const int SIZE = 10;
double numbers[SIZE];
// read in SIZE numbers
printf("Please enter %d numbers: ", SIZE);
for (int i = 0; i < SIZE; i++)
{
scanf("%lf", &numbers[i]);
}
// print array contents
for (int i = 0; i < SIZE; i++)
{
printf("%lf ", numbers[i]);
}
printf("\n");
bubbleSort(numbers, SIZE);
for (int i = 0; i < SIZE; i++)
{
printf("%.2f ", numbers[i]);
}
}
void bubbleSort(double numbers[], int SIZE)
{
int swap = 0;
bool isSorted = false;
int lastUnsorted = SIZE - 1;
while (!isSorted)
{
isSorted = true;
for (int i = 0; i < lastUnsorted; i++) {
if (numbers[i]> numbers[i + 1])
{
swap = numbers[i];
numbers[i] = numbers[i + 1];
numbers[i + 1] = swap;
isSorted = false;
}
}
lastUnsorted--;
}
}
Ниже приведен пример.
Please enter 10 numbers: 5.4 4.1 0.0 -1.5 2.7 9.8 -2.2 3.3 4.1 8.1
-2.200000 -1.000000 0.000000 2.000000 3.300000 4.000000 4.100000 5.000000 8.100000 9.000000
--------------------------------
Process exited after 17.78 seconds with return value 0
Press any key to continue . . .
Как видите, некоторые цифры отображаются как введенные.но другие видятся по-другому.например) Я ввел 9.8
, но это выглядит как 9.000000
.
Можете ли вы сказать мне, что я сделал не так?