extrae y ordena nombres usando estructura

Funciones extraer palabras y ordenarlas

int extrNombCade(NOMB n[], char c[], long l)
{
   /* asume

      typedef struct
      {
         char nomb[30];
      } NOMB;

      y que las palabras constan solo de letras MAYUSCULAS: ASCII de 65 a 90 */

  int nn = -1; /* numero de nombres y posicion */
  int ic, in; /* posicion en cadena, en nombre */
  int an = 0, ac, a; /* anterior, actual, ascii de c[ic] */

  for (ic = 0; ic < l; ic++)
  {
     a = c[ic]; /* ascii del caracter */
     ac = (a >= 65 && a <= 90) ? 1 : 0;
     if (!an && ac)
       {
         /* empieza nombre */
         in = 0;
         n[++nn].nomb[0] = c[ic];
       }

     if (an && ac) n[nn].nomb[++in] = c[ic]; /* sigue nombre */
     if (an && !ac) n[nn].nomb[++in] = ”; /* termina nombre */

     an = ac;
 }

   return ++nn;
}

void ordeNomb(NOMB n[], int c)
{
   /* asume typedef struct { char nomb[30];} NOMB; asume strcmp() y strcpy()
   de string.h */

  int pb, ps, s; /* posicion baja, sube, si n1 < n2 */
  int l1, l2, m, p; /* longitudes 1, 2, menor, posicion en palabras */
  char t[30]; /* para intercambio */

  for (pb = c-1; pb > 0; pb–)
     for (ps = 0; ps < pb; ps++)
     {
        if (strcmp(n[ps].nomb, n[ps+1].nomb) == 1)
        {
           strcpy(t, n[ps].nomb);
           strcpy(n[ps].nomb, n[ps+1].nomb);
           strcpy(n[ps+1].nomb, t);
        }
    }
 }

ecabrera, diciembre 2011

 

Advertisement

Publicado el diciembre 14, 2011 en código. Añade a favoritos el enlace permanente. Dejar un comentario.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.