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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Por que no se ordena?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Por que no se ordena?  (Leído 1,600 veces)
manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Por que no se ordena?
« en: 15 Noviembre 2012, 21:23 pm »

este problema me esta matando, soy el mismo de otras veces quiero ordenarlo alfabeticamente. No veo fallos pero no se ordena. aqui os dejo mi intento

#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 pos[200];
    int i, aux, j;
 
    for(i=0;i<200;i++)
        pos[i ] = i;
 
    for(i=1;i<200;i++)
        for(j=0;j<(200-i);j++)
            if(pnames[j]>pnames[j+1])
            {
                aux = pos[j];
                pos[j] = pos[j+1];
                pos[j+1] = aux;
 
            }
 
    for(i=0;i<200;i++)
        printf("%s\n", pnames[pos[ i ] ] );
system("pause");
    return 0;
}


« Última modificación: 15 Noviembre 2012, 21:25 pm por manutmac » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Por que no se ordena?
« Respuesta #1 en: 15 Noviembre 2012, 21:36 pm »

El problema se debe a que estas comparando las direcciones de memoria con:
Código
  1. if (pnames[j] > pnames[j + 1]){
  2.   aux = pos[j];
  3.   pos[j] = pos[j + 1];
  4.   pos[j + 1] = aux;
  5. }

En su lugar debes utilizar la función "strcmp" (prototipo en <string.h>):
Código
  1. if (strcmp(pnames[pos[j]], pnames[pos[j + 1]]) > 0){
  2.   aux = pos[j];
  3.   pos[j] = pos[j + 1];
  4.   pos[j + 1] = aux;
  5. }

Un saludo


En línea

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
manutmac

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Por que no se ordena?
« Respuesta #2 en: 16 Noviembre 2012, 23:43 pm »

muchas gracias ahora funciona a la perfeccion.  ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
El Papa ordena descubrir al topo
Foro Libre
wolfbcn 0 1,261 Último mensaje 17 Marzo 2012, 02:33 am
por wolfbcn
Como se ordena un Wordlist?
Dudas Generales
Anunnaki2012 0 1,492 Último mensaje 23 Agosto 2012, 11:26 am
por Anunnaki2012
China ordena a sus bombarderos estar en “alerta máxima”
Foro Libre
El_Andaluz 4 2,892 Último mensaje 23 Abril 2017, 13:46 pm
por Orubatosu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines