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
Publicado el diciembre 14, 2011 en código. Añade a favoritos el enlace permanente. Dejar un comentario.
Dejar un comentario