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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con cadena de caracteres en C.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con cadena de caracteres en C.  (Leído 3,908 veces)
GilbertoBrewer

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema con cadena de caracteres en C.
« Respuesta #10 en: 21 Noviembre 2014, 06:56 am »

Buenas noches y muchas gracias por sus aportaciones.

Continuando con el mismo programa, ahora tengo que hacer que, una vez generada la lista con los 10 nombres y apellidos al azar, se organicen alfabéticamente.

El problema es que por alguna razón que desconozco completamente, no me muestra las cadenas como debería al intentar ordenarlas. Ya llevo horas tratando de ver dónde podría estar mal, pero no logro dar con lo que debo cambiar.

El programa lo hice así:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. main ()
  7. {
  8.    char nombre[15][10]={"Pedro","Paco","Perla","Paola","Jorge","Jesus","Maria","Jose","Elisa","Angel"};
  9.    char apellido[15][10]={"Perez","Lopez","Barba","Cruz","Robles","Gomez","Gaytan","Duval","Derbez","Padilla"};
  10.    char nom[30][10];
  11.    char nomord[30][10];
  12.    char opcion;
  13.    int a,b,i,j,lugar,comparar,largo[10];
  14.    srand (time (NULL));
  15.  
  16.    printf ("Escoge una opcion:\n");
  17.        printf ("a-Generar 10 nombres\n");
  18.        printf ("b-Ordenarlos alfabeticamente\n");
  19.        printf ("s-Salir\n");
  20.        scanf("%s",&opcion);
  21.  
  22.    while (opcion!='s')
  23.    {
  24.        switch (opcion)
  25.        {
  26.        case 'a':
  27.            printf ("\nNombres:\n");
  28.            for (i=0; i<10; i++)
  29.            {
  30.                a=rand()%10;
  31.                b=rand()%10;
  32.                sprintf (nom[i],"%s %s%s",nombre[a],apellido[b],"\0");
  33.                largo[i]=strlen(nom[i]);
  34.                printf ("%d- %s - %d\n",i+1,nom[i],largo[i]);
  35.            }
  36.            printf ("\n");
  37.  
  38.            break;
  39.  
  40.        case 'b':
  41.            for (i=0; i<10; i++)
  42.            {
  43.                lugar=0;
  44.                for (j=0; j<10; j++)
  45.                {
  46.                    comparar=strcmp(nom[i],nom[j]);
  47.                    if (comparar>0)
  48.                    {
  49.                        lugar++;
  50.                    }
  51.                }
  52.                while (strcmp(nom[i],nomord[lugar])==0)
  53.                {
  54.                    lugar++;
  55.                }
  56.                sprintf (nomord[lugar],"%s%s",nom[i],"\0");
  57.            }
  58.  
  59.            for (i=0; i<10; i++)
  60.            {
  61.                printf ("%d - %s\n",i+1,nomord[i]);
  62.            }
  63.            break;
  64.        }
  65.  
  66.        printf ("Elige una opcion: ");
  67.        scanf ("%s",&opcion); //Lee una opcion; si se elige la "s" se sale del programa
  68.    }
  69.  
  70.    return 0;
  71. }
  72.  
  73.  

Al compilarlo y ejecutarlo, en pantalla siempre me muestra bien los 10 nombres, pero al elegir después la opción de ordenarlos me empalma los nombres y me muestra cadenas de hasta más de 50 caracteres, con varios nombres pegados uno tras otro.
¿Alguna ayuda al respecto? ¿A qué podría deberse eso y cómo lo corrijo?


En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

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