Programación General > C/C++

 contar palabras de una cadena de caracteres

<< < (2/6) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa