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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No encuentro el error en este codigo para ordenar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No encuentro el error en este codigo para ordenar  (Leído 2,260 veces)
Kougami

Desconectado Desconectado

Mensajes: 53


Ver Perfil
No encuentro el error en este codigo para ordenar
« en: 17 Febrero 2018, 18:39 pm »

Buenas,

Tengo hecho este codigo para ordenar un array usando el campo key que es un int, pero no me lo ordena del todo bien y no se donde esta el error, me podrian ayudar?

Código
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4. char data[4096];
  5. int key;
  6. } item;
  7.  
  8. item array[] = {
  9. {"Juan", 3},
  10. {"Pedro", 4},
  11. {"Victor", 2},
  12. {"Antonio", 5},
  13. {"Alejandro", 1},
  14. };
  15.  
  16. void sort(item *a, int n) {
  17. int i = 0, j = 0;
  18. int s = 1;
  19. item* p;
  20. for(; i < n & s != 0; i++) {
  21. s = 0;
  22. p = a;
  23. j = n-1;
  24. do {
  25. if( p->key > (p+1)->key) {
  26. item t = *p;
  27. *p = *(p+1);
  28. *(p+1) = t;
  29. s++;
  30. }
  31. } while ( --j >= 0 );
  32. }
  33. }
  34.  
  35. int main() {
  36. int i;
  37. sort(array,5);
  38. for(i = 0; i < 5; i++){
  39. printf("Array[%d] = { %s, %d}\n", i, array[i].data, array[i].key);
  40. }
  41. return 0;
  42. }
  43.  

Muchas gracias de antemano


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: No encuentro el error en este codigo para ordenar
« Respuesta #1 en: 17 Febrero 2018, 19:06 pm »

A simple vista he visto que:
Línea 20 has puesto & cuando el AND lógico es &&.


En línea

Kougami

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: No encuentro el error en este codigo para ordenar
« Respuesta #2 en: 17 Febrero 2018, 19:09 pm »

Tanto con el && como solo con el & la salida sigue siendo la misma
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: No encuentro el error en este codigo para ordenar
« Respuesta #3 en: 17 Febrero 2018, 22:40 pm »

Te cambio la función Sort por esta, bastante más sencilla:
Código
  1. void sort(item *a, int n) {
  2.    int i, j;
  3.    for(i=0; i<n-1; ++i) {
  4.        for(j=i+1; j<n; ++j) {
  5.            if(a[i].key > a[j].key) {
  6.                item t = a[i];
  7.                a[i] = a[j];
  8.                a[j] = t;
  9.            }
  10.        }
  11.    }
  12. }
« Última modificación: 17 Febrero 2018, 23:41 pm por MAFUS » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguien que me ayude a Ordenar este Código?
Programación General
aoBKnbX95S 4 2,296 Último mensaje 18 Septiembre 2014, 23:36 pm
por engel lex
buenas hice este codigo para ordenar alfaveticamente esta bien
Programación C/C++
eduardo17445 3 2,169 Último mensaje 26 Junio 2015, 22:35 pm
por engel lex
No encuentro el error en este programa con arrays
Java
Berman 5 2,079 Último mensaje 27 Abril 2016, 19:46 pm
por MCKSys Argentina
No encuentro el error en este programa - Structs + Punteros
Programación C/C++
palacio29 2 1,595 Último mensaje 18 Mayo 2019, 22:23 pm
por MAFUS
No encuentro el error en el codigo
Java
Ruusa 0 1,586 Último mensaje 25 Junio 2019, 22:28 pm
por Ruusa
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines