Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: hzre en 23 Noviembre 2020, 18:44 pm



Título: No Imprime
Publicado por: hzre en 23 Noviembre 2020, 18:44 pm
Código
  1. #include<stdio.h>
  2. int main(void) {
  3.  // El arreglo
  4.  int arreglo[] = {28, 11, 96, -5, 21, 18, 12, 22, 30, 97, -1, -40, -500};
  5.  /*Calcular la longitud, puede ser definida por ti o calculada:*/
  6.  int longitud = sizeof arreglo / sizeof arreglo[0];
  7.  /*Imprimirlo antes de ordenarlo*/
  8.  printf("Imprimiendo arreglo antes de ordenar...\n");
  9.  for (int x = 0; x < longitud; x++) {
  10.    printf("%d ", arreglo[x]);
  11.  }
  12.  // Un salto de línea
  13.  printf("\n");
  14.  /*Invocar a quicksort indicando todo el arreglo, desde 0 hasta el índice final */
  15.  quicksort(arreglo, 0, longitud - 1);
  16.  /*Imprimirlo después de ordenarlo*/
  17.  printf("Imprimiendo arreglo despues de ordenar...\n");
  18.  for (int x = 0; x < longitud; x++)
  19.    printf("%d ", arreglo[x]);
  20.  return 0;
  21. }

Me marca error en quicksort, tengo la idea pero no se si me falte otra libreria o asi algo por el estilo


MOD: El código debe estar publicado entre etiquetas de Código GeSHi


Título: Re: No Imprime
Publicado por: Danielㅤ en 23 Noviembre 2020, 18:55 pm
Hola, aquí está el error:

  printf("%d ", arreglo
);

Ese paréntesis no puede ir abajo así, dará error.


Saludos


Título: Re: No Imprime
Publicado por: hzre en 23 Noviembre 2020, 18:58 pm
quicksort(arreglo, 0, longitud - 1);

Este seria mi error mas bien


Título: Re: No Imprime
Publicado por: Eternal Idol en 23 Noviembre 2020, 19:55 pm
Te falta el codigo  ;D  Si uso Google para buscar el siguiente comentario lo encuentro completo: "/*Invocar a quicksort indicando todo el arreglo, desde 0 hasta el índice final */".


Título: Re: No Imprime
Publicado por: K-YreX en 23 Noviembre 2020, 23:20 pm
Me marca error en quicksort, tengo la idea pero no se si me falte otra libreria o asi algo por el estilo
Efectivamente, como dice Eternal Idol, lo que te falta es el código; es decir, la función. La función:
Código
  1. quicksort(int[], int, int);
no existe por lo que tienes que implementarla tú.
Eso es lo que pasa cuando se copia el código tal cual de Github.

PD: Espero por tu propio bien que ese programa no sea una tarea que tengas que entregar pues ya ves lo fácil que ha sido encontrar el código original.


Título: Re: No Imprime
Publicado por: Danielㅤ en 23 Noviembre 2020, 23:54 pm
Aquí está la función que falta (quicksort):

Código
  1. void quicksort(int arr[], int left, int right) {
  2.      int i = left, j = right;
  3.      int tmp;
  4.      int pivot = arr[(left + right) / 2];
  5.  
  6.      /* partition */
  7.      while (i <= j) {
  8.            while (arr[i] < pivot)
  9.                  i++;
  10.            while (arr[j] > pivot)
  11.                  j--;
  12.            if (i <= j) {
  13.                  tmp = arr[i];
  14.                  arr[i] = arr[j];
  15.                  arr[j] = tmp;
  16.                  i++;
  17.                  j--;
  18.            }
  19.      };
  20.  
  21.      /* recursion */
  22.      if (left < j)
  23.            quickSort(arr, left, j);
  24.      if (i < right)
  25.            quickSort(arr, i, right);
  26. }


Saludos


Título: Re: No Imprime
Publicado por: Eternal Idol en 24 Noviembre 2020, 08:06 am
Aquí está la función que falta (quicksort):

Por algo no la pusimos antes  :rolleyes: