tccp-7-frase long canCar(char f[]) { // cantidad de caracteres en f (termina en '\0') long c = -1; // cantidad while (f[++c] != '\0'); return c; } … int main() { // cantidad de caracteres en frase char fr[] = "Que linda en el tope estas! Dominicana bandera!"; printf("%ld", canCar(fr)); return 0; } … long canPal(char f[]) { // cantidad de palabras en f (a un espacio) long c = 1, p = 0; // cantidad, posicion while (f[p] != '\0') if (f[p++] == ' ') c++; return c; } … int main() { // cantidad de palabras en frase (a un espacio) char fr[] = "Que linda en el tope estas! Dominicana bandera!"; printf("%ld", canPal(fr)); return 0; } … long canPal(char f[]) { // cantidad de palabras en f (no importa espaciado) long c = 0, p = 1, a, i = 0;// cant., previa, actual, indice char ch; // caracter actual while (f[i] != '\0') { ch = f[i++]; a = (ch == ' ') ? 1 : 0; if (p && !a) c++; p = a; } return c; } … int main() { // cantidad de palabras en frase (no importa espaciado) char fr[] = "Que linda en el tope estas! Dominicana bandera!"; printf("%ld", canPal(fr)); return 0; } … short siLetra(char x) { // si x es una letra (minuscula, mayuscula, acento, dieresis) short s = 0, p = 0; // si es, posicion char c[ ] = "aáAÁbBcCdDeéEÉfFgGhHiíIÍjJkKlLMmNnoóOÓpPqQrRsStTuúüUÚÜvVwWxXyYzZ"; while (!s && c[p] != '\0') if (c[p++] == x) s = 1; return s; } … int main() { // si letra castellana printf("%d", siLetra('2')); getch(); return 0; } … long canPal(char f[]) { // cantidad de palabras en f (estrictas) long c = 0, p = 1, a, i = 0;// cant., previa, actual, indice char ch; // caracter actual while (f[i] != '\0') { ch = f[i++]; a = (siLetra(ch)); if (p && !a) c++; p = a; } return c; } … int main() { // cantidad de palabras (estrictas) printf("%d", canPal("Que 6 linda && tope! Dominicana bandera!")); getch(); return 0; } … long extPal(char pl[][50], char f[]) { // extrae palabras de f (estrictas) (menos de 50 letras) long c = -1, p = 1, a;// cant., previa, actual long pf = 0, pp; // posicion en frase, en palabra long cc = strlen(f); // cant. caracteres char ch; // caracter actual while (pf < cc) { ch = f[pf]; a = (!siLetra(ch)); if (p && !a) // inicia palabra { c++; pl[c][0] = ch; pp = 1; } if (!p && !a) // sigue palabra pl[c][pp++] = ch; if (!p && a || pf == cc) // termina palabra pl[c][pp] = '\0'; p = a; pf++; } return ++c; } … int main() { // si letra castellana char pal[100][50]; // palabras long c = 0, cp; cp = extPal(pal, "uno dos tres 123 cuatro cinco"); printf("%ld:\n", cp); while (c < cp) printf("%s\n", pal[c++]); getch(); return 0; }… ecabrera – sdqdr – sep 2013