Autor
|
Tema: no entiendo porque pero no funciona ( ordenar array ) (Leído 4,225 veces)
|
manutmac
Desconectado
Mensajes: 13
|
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
|
Recuerda que length es un arreglo y debes indicar la posición.
|
|
|
En línea
|
|
|
|
manutmac
Desconectado
Mensajes: 13
|
si esta puesto, pero no se por que no se muestra en el mensaje
|
|
|
En línea
|
|
|
|
naderST
|
for( int i=0; i<200; i++) length [i ] = strlen(pnames [i ]);for( int i=0; i<200; i++) pos[i] = i;
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: int i = 0; for( ... ){ }
|
|
|
En línea
|
|
|
|
manutmac
Desconectado
Mensajes: 13
|
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
|
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: #include <stdio.h> #include <string.h> 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 main() { int length[200], pos[200]; int i, aux, j; for(i=0;i<200;i++) { pos[i] = i; length [i ] = strlen(pnames [i ]); } for(i=1;i<200;i++) for(j=0;j<(200-i);j++) if(length[j]>length[j+1]) { aux = pos[j]; pos[j] = pos[j+1]; pos[j+1] = aux; aux = length[j]; length[j] = length[j+1]; length[j+1] = aux; } for(i=0;i<200;i++) printf("%s\n", pnames [pos [i ]]); return 0; }
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
Mensajes: 13
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Source] Ordenar Array (Low y Fast)
Programación Visual Basic
|
BlackZeroX
|
3
|
3,445
|
29 Octubre 2009, 18:05 pm
por ssccaann43 ©
|
|
|
Ordenar en Array¡
« 1 2 »
Java
|
Meg
|
10
|
9,437
|
31 Enero 2010, 23:13 pm
por tripled
|
|
|
Ordenar array perl y regex
Scripting
|
¨°o.O (ßa¢Kg|姧) O.o°
|
6
|
5,393
|
9 Julio 2010, 03:46 am
por ~ Yoya ~
|
|
|
Ordenar array bidimensional
Java
|
KaRaLLo
|
5
|
18,714
|
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,634
|
12 Mayo 2013, 03:34 am
por Platanito Mx
|
|