Função de ordenação de Array em C
Minha lógica com toda certeza está incorreta, contudo quero ver o array gerado, mas o compilador acusa stack smashing:
/*Implemente um algoritmo em C que ordene um array em ordem crescente*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define size 11
void *sortArray(double *arr, int arraySize);
int main(void)
{
float numbers[] = {0, 8, 1, 7, 9, 6, 2, 2, 3, 4, 5};
sortArray((double*)numbers, size);
printf("Ascending Order: ");
for (int i = 0; i < size; i++)
{
printf("%.2f ", numbers[i]);
}
return EXIT_SUCCESS;
}
void *sortArray(double *arr, int arraySize)
{
int fixedNumIndex = (arraySize - 1);
double aux;
bool biggest;
for(int i = 0; i < arraySize; i++)
{
biggest = false;
for(int j = 0; j < fixedNumIndex; j++)
{
if(arr[i] > arr[j])
{
biggest = true;
}
}
if(biggest)
{
aux = arr[fixedNumIndex];
arr[fixedNumIndex] = arr[i];
arr[i] = aux;
fixedNumIndex--;
}
}
}
OUTPUT:
Ascending Order: -0.00 0.00 0.00 8.00 1.00 7.00 9.00 6.00 2.00 2.00 3.00
*** stack smashing detected ***: terminated
Aborted (core dumped)
/*Implemente um algoritmo em C que ordene um array em ordem crescente*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define size 11
void *sortArray(double *arr, int arraySize);
int main(void)
{
float numbers[] = {0, 8, 1, 7, 9, 6, 2, 2, 3, 4, 5};
sortArray((double*)numbers, size);
printf("Ascending Order: ");
for (int i = 0; i < size; i++)
{
printf("%.2f ", numbers[i]);
}
return EXIT_SUCCESS;
}
void *sortArray(double *arr, int arraySize)
{
int fixedNumIndex = (arraySize - 1);
double aux;
bool biggest;
for(int i = 0; i < arraySize; i++)
{
biggest = false;
for(int j = 0; j < fixedNumIndex; j++)
{
if(arr[i] > arr[j])
{
biggest = true;
}
}
if(biggest)
{
aux = arr[fixedNumIndex];
arr[fixedNumIndex] = arr[i];
arr[i] = aux;
fixedNumIndex--;
}
}
}
OUTPUT:
Ascending Order: -0.00 0.00 0.00 8.00 1.00 7.00 9.00 6.00 2.00 2.00 3.00
*** stack smashing detected ***: terminated
Aborted (core dumped)
Tiago
Curtidas 0