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

Iniciado por GenR_18, 19 Septiembre 2014, 22:48 PM

0 Miembros y 1 Visitante están viendo este tema.

GenR_18

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 (c++) [Seleccionar]

int quicksort2(int numeros[], int izq, int der)
{
    if(izq>=der)
        return numeros;
    int i=izq, d=der;
    if(izq!=der)
    {
        int pivote;
        int aux;
        pivote=izq;
        while(izq!=der){
            while(numeros[der]>=numeros[pivote] && izq<der)
                der--;
                while(numeros[izq]<numeros[pivote]&& izq<der)
                    izq++;
            if(der!=izq)
            {
                aux=numeros[der];
                numeros[der] = numeros[izq];
                numeros[izq] = aux;
            }
            if(izq==der){
                quicksort2(numeros,i,izq-1);
                quicksort2(numeros,izq+1,d);
            }
        }

        }
    else
        return numeros;
    return numeros;
    }


int quicksort1(int numeros[])
{
    int n = (sizeof(numeros)/sizeof(numeros[0])); // tamañp del arreglo
    return quicksort2(numeros,0,n-1);
}

void ordenarQuickSort(int arreglo[])
{
    arreglo = quicksort1(arreglo);
}


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

Salu2

T. Collins

Las funciones quicksort2 y quicksort1 son de tipo int pero devuelven un int*

rir3760

Cita de: GenR_18 en 19 Septiembre 2014, 22:48 PMEstoy 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 (cpp) [Seleccionar]
int quicksort1(int numeros[])
{
   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 (cpp) [Seleccionar]
void ordenarQuickSort(int arreglo[])
{
   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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language