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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  no entiendo porque pero no funciona ( ordenar array )
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: no entiendo porque pero no funciona ( ordenar array )  (Leído 4,210 veces)
manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
no entiendo porque pero no funciona ( ordenar array )
« en: 13 Noviembre 2012, 15:28 pm »

Lo que quiero es que me cambie las posiciones del array pero no funciona y no se por que. Necesito asi para poder asi ordenarlas segun un segundo criterio en caso de igualdad de longitud de la palabra




#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {

const char *const pnames[200] = {"Muhittin", "Mufit", "Serkan", "Kaan",
"Izzet", "Muzaffer", "Umid", "Sami", "Uykura", "Kayhan", "Yakup", "Mert",
"Cetin", "Ilknur", "Gokhan", "Salah", "Irem", "Korhan", "Isin", "Berk",
"Tacettin", "Duygu", "Figen", "Funda", "Fuat", "Arda","Muhsin", "Guray",
"Necati", "Kadriye", "Gurbuz", "Hamide", "Volkan", "Selami", "Esra",
"Cumhur", "Can", "Aleyna", "Salih", "Kamuran", "Ferhan", "Furuze",
"Sukufe", "Sidre", "Cahit", "Sercan", "Jale", "Bilge", "Tijen", "Tufan",
"Zeliha", "Cevdet", "Burak", "Ufuk", "Zarife", "Bengisu", "Melda", "Zafer",
"Yelda", "Didar", "Hande", "Cumali", "Dilek", "Kemal", "Hasan", "Ismail",
"Fatma", "Burcu", "Siyami", "Busra", "Gizem", "Ramize", "Sezai", "Polat",
"Melike", "Umut", "Serencan", "Uzeyir", "Kamile", "Deniz", "Veysel",
"Emrehan", "Gulcan", "Ender", "Furkan", "Veli", "Muhtesem", "Necmettin",
"Osman", "Perihan", "Didem", "Tunc", "Irmak","Petek", "Sebahat", "Halime",
"Mahir", "Leyla", "Eda", "Ali", "Ibrahim", "Berivan", "Ilter", "Metin",
"Bozkurt", "Olgun", "Hudai", "Esin", "Taylan", "Memduh", "Selimcan",
"Ayse", "Baran", "Keriman", "Tankurt", "Feramuz", "Abdullah", "Ferda",
"Kuntay", "Ceyhan", "Edip", "Nuri", "Mahide", "Selda", "Murathan",
"Celebi", "Talha", "Mehtap", "Ece", "Abdurrahman", "Baki", "Anil", "Unsal",
"Melahat", "Sezgin", "Miran", "Cansel", "Sibel", "Aliye", "Derya", "Naime",
"Gulden", "Konar","Soner", "Gulistan", "Mestan", "Galip", "Lamia", "Hakan",
"Ugur", "Ege", "Husnu", "Sumbul", "Mustafa", "Simge", "Selva", "Mehmet",
"Irfan", "Cezmi", "Turgut", "Konur", "Aysegul", "Mesut", "Ceren", "Adem",
"Ferhat", "Murat", "Yunus", "Beyhan", "Erdem", "Sunusi", "Ata", "Sencer",
"Handan", "Cihan", "Levent", "Aykut", "Ferit", "Demir", "Kerim", "Feraye",
"Caner", "Baris", "Ozlem", "Ihsan", "Meltem","Kurthan", "Okan", "Huseyin",
"Sezgi", "Celik", "Cemal", "Sinan", "Sefa", "Cigdem", "Leman", "Nejla",
"Gurkan", "Gulsum", "Damla",};

int length[200];
int pos[200];
int aux;

for( int i=0; i<200; i++)
length = strlen(pnames);
for( int i=0; i<200; i++)
pos = i;

for(int i = 0; i < 200; i++){
        for(int j = 0; j < 199; j++){
        if(length[j]>length[j+1]){
        aux=pos[j];
        pos[j]=pos[j+1];
        pos[j+1]=aux;}
             }
    }
       for( int i=0; i<200; i++)
        printf("%i ", pos);


system("\npause");


return 0;

}


« Última modificación: 13 Noviembre 2012, 16:56 pm por manutmac » En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: no entiendo porque pero no funciona ( ordenar array )
« Respuesta #1 en: 13 Noviembre 2012, 16:11 pm »

Código
  1. length = strlen(pnames);
  2.  

Recuerda que length es un arreglo y debes indicar la posición.


En línea

manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: no entiendo porque pero no funciona ( ordenar array )
« Respuesta #2 en: 13 Noviembre 2012, 16:57 pm »

si esta puesto, pero no se por que no se muestra en el mensaje
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: no entiendo porque pero no funciona ( ordenar array )
« Respuesta #3 en: 13 Noviembre 2012, 17:23 pm »

Código
  1. for( int i=0; i<200; i++)
  2. length[i] = strlen(pnames[i]);
  3. for( int i=0; i<200; i++)
  4. pos[i] = i;
  5.  

Asumo que esto es lo que estas tratando de hacer...

PD: Veo que estas programando en C y no puedes declarar i en el for(), es decir, debes declararlo fuera:
Código
  1. int i = 0;
  2. for( ... ){
  3. }
En línea

manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: no entiendo porque pero no funciona ( ordenar array )
« Respuesta #4 en: 13 Noviembre 2012, 20:56 pm »

no debe ser el problema por que tambien lo he intentado hacer asi, pero en el codigo no hay problemas no? no entiendo que pasa.
Muchas gracias de todas formas
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: no entiendo porque pero no funciona ( ordenar array )
« Respuesta #5 en: 13 Noviembre 2012, 22:07 pm »

Tu algoritmo de ordenamiento tiene ciertos detalles, por ejemplo no haces el intercambio en el arreglo length. Hay varios algoritmos de ordenamiento, te recomiendo investigues sobre ellos. Aquí te dejo un ejemplo haciendo uso del ordenamiento de burbuja:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. const char *const pnames[200] = {"Muhittin", "Mufit", "Serkan", "Kaan",
  5. "Izzet", "Muzaffer", "Umid", "Sami", "Uykura", "Kayhan", "Yakup", "Mert",
  6. "Cetin", "Ilknur", "Gokhan", "Salah", "Irem", "Korhan", "Isin", "Berk",
  7. "Tacettin", "Duygu", "Figen", "Funda", "Fuat", "Arda","Muhsin", "Guray",
  8. "Necati", "Kadriye", "Gurbuz", "Hamide", "Volkan", "Selami", "Esra",
  9. "Cumhur", "Can", "Aleyna", "Salih", "Kamuran", "Ferhan", "Furuze",
  10. "Sukufe", "Sidre", "Cahit", "Sercan", "Jale", "Bilge", "Tijen", "Tufan",
  11. "Zeliha", "Cevdet", "Burak", "Ufuk", "Zarife", "Bengisu", "Melda", "Zafer",
  12. "Yelda", "Didar", "Hande", "Cumali", "Dilek", "Kemal", "Hasan", "Ismail",
  13. "Fatma", "Burcu", "Siyami", "Busra", "Gizem", "Ramize", "Sezai", "Polat",
  14. "Melike", "Umut", "Serencan", "Uzeyir", "Kamile", "Deniz", "Veysel",
  15. "Emrehan", "Gulcan", "Ender", "Furkan", "Veli", "Muhtesem", "Necmettin",
  16. "Osman", "Perihan", "Didem", "Tunc", "Irmak","Petek", "Sebahat", "Halime",
  17. "Mahir", "Leyla", "Eda", "Ali", "Ibrahim", "Berivan", "Ilter", "Metin",
  18. "Bozkurt", "Olgun", "Hudai", "Esin", "Taylan", "Memduh", "Selimcan",
  19. "Ayse", "Baran", "Keriman", "Tankurt", "Feramuz", "Abdullah", "Ferda",
  20. "Kuntay", "Ceyhan", "Edip", "Nuri", "Mahide", "Selda", "Murathan",
  21. "Celebi", "Talha", "Mehtap", "Ece", "Abdurrahman", "Baki", "Anil", "Unsal",
  22. "Melahat", "Sezgin", "Miran", "Cansel", "Sibel", "Aliye", "Derya", "Naime",
  23. "Gulden", "Konar","Soner", "Gulistan", "Mestan", "Galip", "Lamia", "Hakan",
  24. "Ugur", "Ege", "Husnu", "Sumbul", "Mustafa", "Simge", "Selva", "Mehmet",
  25. "Irfan", "Cezmi", "Turgut", "Konur", "Aysegul", "Mesut", "Ceren", "Adem",
  26. "Ferhat", "Murat", "Yunus", "Beyhan", "Erdem", "Sunusi", "Ata", "Sencer",
  27. "Handan", "Cihan", "Levent", "Aykut", "Ferit", "Demir", "Kerim", "Feraye",
  28. "Caner", "Baris", "Ozlem", "Ihsan", "Meltem","Kurthan", "Okan", "Huseyin",
  29. "Sezgi", "Celik", "Cemal", "Sinan", "Sefa", "Cigdem", "Leman", "Nejla",
  30. "Gurkan", "Gulsum", "Damla",};
  31.  
  32. int main()
  33. {
  34.    int length[200], pos[200];
  35.    int i, aux, j;
  36.  
  37.    for(i=0;i<200;i++)
  38.    {
  39.        pos[i] = i;
  40.        length[i] = strlen(pnames[i]);
  41.    }
  42.  
  43.    for(i=1;i<200;i++)
  44.        for(j=0;j<(200-i);j++)
  45.            if(length[j]>length[j+1])
  46.            {
  47.                aux = pos[j];
  48.                pos[j] = pos[j+1];
  49.                pos[j+1] = aux;
  50.  
  51.                aux = length[j];
  52.                length[j] = length[j+1];
  53.                length[j+1] = aux;
  54.            }
  55.  
  56.    for(i=0;i<200;i++)
  57.        printf("%s\n", pnames[pos[i]]);
  58.    return 0;
  59. }
  60.  

Puedes revisar el siguiente enlace para más información de los algoritmos de ordenamiento:

http://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
En línea

manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: no entiendo porque pero no funciona ( ordenar array )
« Respuesta #6 en: 14 Noviembre 2012, 17:50 pm »

ok, muchas gracias. Ahora lo entendi. Si no pongo el length no se va ordenando y la pos no cambia tampoco. Me ofusque. Muchas gracias de verdad
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Source] Ordenar Array (Low y Fast)
Programación Visual Basic
BlackZeroX 3 3,431 Último mensaje 29 Octubre 2009, 18:05 pm
por ssccaann43 ©
Ordenar en Array¡ « 1 2 »
Java
Meg 10 9,412 Último mensaje 31 Enero 2010, 23:13 pm
por tripled
Ordenar array perl y regex
Scripting
¨°o.O (ßa¢Kg|姧) O.o° 6 5,381 Último mensaje 9 Julio 2010, 03:46 am
por ~ Yoya ~
Ordenar array bidimensional
Java
KaRaLLo 5 18,695 Último mensaje 1 Abril 2013, 02:36 am
por seraff
Tengo en una USB un acceso directo a una carpeta pero no funciona porque cambia
Windows
Platanito Mx 0 1,625 Último mensaje 12 Mayo 2013, 03:34 am
por Platanito Mx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines