Programación General > C/C++
contar palabras de una cadena de caracteres
herzdark:
--- Cita de: "m0skit0" ---
--- Cita de: "herzdark" ---yo lo haría con artimetica de punteros (si ya lo has visto), así te podría andar tanto en C como en C++
--- Fin de la cita ---
No. Las cadenas podrían ser de la clase estándar string de C++.
Aparte ¿la cadena en qué formato es? ASCII, Unicode, etc...
--- Fin de la cita ---
tenes razón pero como yo vengo de C a C++ no utilizo la clase estándar string, prefiría crear un char* y después trabajar con new y delete son gustos de programación y cual sería la diferencia si es ASCII o Unicode?
m0skit0:
--- Cita de: "herzdark" ---tenes razón pero como yo vengo de C a C++ no utilizo la clase estándar string
--- Fin de la cita ---
Yo vengo de C también, eso no es una razón. Si es en C++ lo que quiere hacer, es muchísimo mejor utilizar la clase string. Si es C, entonces no habrá más remedio que char*.
--- Cita de: "herzdark" ---son gustos de programación
--- Fin de la cita ---
No estoy de acuerdo. Una cosa son gustos, y otra paradigmas de programación. Si vas a usar C++ y POO, entonces hazlo todo con clases y siguiendo el paradigma de POO (encapsulación, etc...). Si no, mejor usa C a secas.
--- Cita de: "herzdark" ---cual sería la diferencia si es ASCII o Unicode?
--- Fin de la cita ---
ASCII es un byte mientras que Unicode son 2.
crixxus:
Ok chicos una de las formas en que lo hice fue de la siguiente
--- Código: C++ ---#include<iostream.h>#include<string.h> long palab(char *c); int main(){ char frase [200]; cout<<"Digite la una oracion: "; gets(frase); cout<<"El numero de palabras que tiene la oracion: "<<frase<<" es: "<<palab(frase); cout<<"n"; system("pause");} long palab(char *c){ int cont=0; for(int i=0;i<200;i++){ if(c[i]==' '||c[i]==''){ cont ++; } if(c[i]==''){ i=200; } } return cont;}
Peo el problema con esta forma es que te cuenta los doble espacios y la idea es que cuente las palabras
herzdark:
--- Cita de: "crixxus" ---
--- Código: C++ --- long palab(char *c){int cont=0; for(int i=0;i<200;i++) {if(c[i]==' '||c[i]=='') cont ++; if(c[i]=='') i=200; } return cont;}
--- Fin de la cita ---
primero ante q todo gracias moskito x la respuesta es q a mi en la fac me hacían hacer clases pero con char * y no con string y bueno volviendo a los q nos compete viendo el codigo el problema es q contas los espacios entonces tu condicion sería q c!=' ' y yo cambiaria el for por un while porque vos estas recorriendo las 200 posiciones del array cuando tu frase tenga por ejemplo 30 caracteres, entonces quedaría así
--- Código: C++ ---while (c[i]!='') con lo que puse recien, vos contarias hasta encontrar el fin de cadena y no las 200 de la cadena y lo otro t lo podes rebuscar pensando q cuando hay estacios en blanco lo saltas y cuando termina la palabra lo contas, haber si te sirvio así
crixxus:
Lo voy a intentar mañana te comento
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa