elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  cual es el error en este codigo en el lenguaje de programacion c??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: cual es el error en este codigo en el lenguaje de programacion c??  (Leído 1,539 veces)
fedemaxrul

Desconectado Desconectado

Mensajes: 9


Ver Perfil
cual es el error en este codigo en el lenguaje de programacion c??
« en: 3 Diciembre 2016, 19:30 pm »

estoy practicando punteros a funciones, por eso hago el programa de esta forma, en la funcion intercambio, cuando la llamo en qshort me tira un error, a que se refiere?? como lo puedo solucionar?? como le debo pasar los argumento "derecha" y "izquierda "a la función intercambio llamado en qshort que recibe punteros a "derecha" y "izquierda", que deberan ser pasados a la funcion que llamara.
perdon si los confundi.
muchas gracias desde ya!!!

[MOD] Al publicar código, usar las etiquetas GeSHi


Código
  1. #include <stdio.h>
  2. void qshort(int*array,int*izquierda,int*derecha,int(*intercambio)(int,int),int(*comp)(int,int));
  3. void intercambio(int a[],int izquierda,int derecha);
  4. int comp(int a,int b);
  5. int main()
  6. {
  7.    int array[]={6,1,9,8,2,7,4,0,3,5};
  8.    int izquierda,derecha,i;
  9.    izquierda=0;
  10.    derecha=9;
  11.    for(i=0;i<10;i++)
  12.    {
  13.        printf("array[%d] = %d\n",i,array[i]);
  14.    }
  15.    qshort(array,&izquierda,&derecha,intercambio,comp);
  16.    printf("\n\n");
  17.        for(i=0;i<10;i++)
  18.    {
  19.        printf("array[%d] = %d\n",i,array[i]);
  20.    }
  21.    return 0;
  22. }
  23. void intercambio(int a[],int derecha,int izquierda)
  24. {
  25.    int temp;
  26.     temp=a[izquierda];
  27.     a[izquierda]=a[derecha];
  28.     a[derecha]=temp;
  29. }
  30. void qshort(int array[],int*izquierda,int*derecha,int(*intercambio)(int,int),int(*comp)(int,int))
  31. {
  32.    int pivote,i;
  33.    pivote=*izquierda+*derecha/2;
  34.    while(*izquierda<*derecha)
  35.    {
  36.        while(comp(array[*izquierda],array[pivote]))
  37.        {
  38.            *izquierda+=1;
  39.        }
  40.        while(comp(array[pivote],array[*derecha]))
  41.        {
  42.            printf(".\n");
  43.            *derecha-=1;
  44.        }
  45.        intercambio(array,*izquierda,*derecha);
  46.        for(i=0;i<10;i++)
  47.    {
  48.        printf("array[%d] = %d\n",i,array[i]);
  49.    }
  50.    system("pause");
  51.    }
  52. }
  53. int comp(int a,int b)
  54. {
  55.    if(a<b)
  56.    {
  57.        return 1;
  58.    }
  59.    else if(a>b)
  60.    {
  61.        return 0;
  62.    }
  63. }
  64.  
  65.  


« Última modificación: 3 Diciembre 2016, 19:51 pm por simorg » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: cual es el error en este codigo en el lenguaje de programacion c??
« Respuesta #1 en: 3 Diciembre 2016, 20:49 pm »

Creo que es porque defines 2 parámetros aqui:

Código
  1. int(*intercambio)(int,int)

pero en realidad en el método usas 3 y debe retornar void, debería ser así:

Código
  1. void(*intercambio)(int[],int,int)

Saludos  ;-)



« Última modificación: 3 Diciembre 2016, 20:51 pm por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines