Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GenR_18 en 19 Septiembre 2014, 22:48 pm



Título: error: invalid conversion from 'int*' to 'int' [-fpermissive]|
Publicado por: GenR_18 en 19 Septiembre 2014, 22:48 pm
Buenas!

Estoy desoxidandome  ;D un poco sobre el tema de los métodos de ordenamiento en C++, y al "terminar" mi código del QuickSort me ha salido este error.

error: invalid conversion from 'int*' to 'int' [-fpermissive]|  :¬¬

Código
  1. int quicksort2(int numeros[], int izq, int der)
  2. {
  3.    if(izq>=der)
  4.        return numeros;
  5.    int i=izq, d=der;
  6.    if(izq!=der)
  7.    {
  8.        int pivote;
  9.        int aux;
  10.        pivote=izq;
  11.        while(izq!=der){
  12.            while(numeros[der]>=numeros[pivote] && izq<der)
  13.                der--;
  14.                while(numeros[izq]<numeros[pivote]&& izq<der)
  15.                    izq++;
  16.            if(der!=izq)
  17.            {
  18.                aux=numeros[der];
  19.                numeros[der] = numeros[izq];
  20.                numeros[izq] = aux;
  21.            }
  22.            if(izq==der){
  23.                quicksort2(numeros,i,izq-1);
  24.                quicksort2(numeros,izq+1,d);
  25.            }
  26.        }
  27.  
  28.        }
  29.    else
  30.        return numeros;
  31.    return numeros;
  32.    }
  33.  
  34.  
  35. int quicksort1(int numeros[])
  36. {
  37.    int n = (sizeof(numeros)/sizeof(numeros[0])); // tamañp del arreglo
  38.    return quicksort2(numeros,0,n-1);
  39. }
  40.  
  41. void ordenarQuickSort(int arreglo[])
  42. {
  43.    arreglo = quicksort1(arreglo);
  44. }
  45.  

Espero alguien me pueda ayudar, desde ya, gracias!.  :rolleyes:

Salu2


Título: Re: error: invalid conversion from 'int*' to 'int' [-fpermissive]|
Publicado por: T. Collins en 19 Septiembre 2014, 23:39 pm
Las funciones quicksort2 y quicksort1 son de tipo int pero devuelven un int*


Título: Re: error: invalid conversion from 'int*' to 'int' [-fpermissive]|
Publicado por: rir3760 en 20 Septiembre 2014, 02:12 am
Estoy desoxidandome  ;D un poco sobre el tema de los métodos de ordenamiento en C++, y al "terminar" mi código del QuickSort me ha salido este error.

error: invalid conversion from 'int*' to 'int' [-fpermissive]|
Tienes otros dos errores, en la función "quicksort1" tratas de obtener el numero de elementos con:
Código
  1. int quicksort1(int numeros[])
  2. {
  3.   int n = (sizeof(numeros)/sizeof(numeros[0])); // tamañp del arreglo
No funcionara correctamente ya que el tipo del parámetro "numeros" es "int *".

El otro error se encuentra en la función "ordenarQuickSort":
Código
  1. void ordenarQuickSort(int arreglo[])
  2. {
  3.   arreglo = quicksort1(arreglo);
Ahí "arreglo" es una variable local de tipo "int *", su modificación solo tendrá efecto dentro de la función (y sin el resultado buscado de copiar el array ya que estos no pueden copiarse mediante el operador de asignación).

Ya que se trata de C++ lo mejor es pasar una referencia a un objeto de la clase vector (hay algunos ejemplos en la base de datos de los foros).

Un saludo