#include <stdio.h>
#include <string.h>
int main()
{
char cadena[]="a p**a";
char groseria[]="p**a";
int value;
int val;
int x=0;
for(value=0;cadena[value]!='\0';value++)
{
if(cadena[value]==groseria[0])
{
for(val=0;cadena[value+val]!='\0';val++)
{
if(cadena[value+val]==groseria[val])
{
x++;
}
else
{
x=0;
}
if(x==strlen(groseria))
{
printf(" el detector de groserias a encontrado una coincidencia en la posicion %i \n",value);
}
}
}
}
return 0;
}
;-) ;-)
Deberías ampliar el programa para una lisa de palabras ^^
Por cierto una implementación en C++:
#include <iostream>
using namespace std;
const char Palabras_Malsonantes = 4;
int main()
{
string Nombre = "Casa de p***a";
int indice;
const char Palabras[30][20] = {
{"p***a"},
{"cab**n"},
{"idiota"},
{"lameculos"}
};
for (int i = 0; i < Palabras_Malsonantes;i++)
{
if ((indice = Nombre.find(Palabras[i])) != -1)
cout<<"Se encontro una palabra malsonante en la posicion "<<indice<<endl;
}
return 0;
}
¿Y por que no usar lo que ya existe como es strstr de string.h? Le indicas la cadena y la subcadena a buscar y te devuelve la posicion de esta si la encuentra, y si la encuentra pues vuelves a usarla pero esta vez empiezas a buscar desde el resultado obtenido mas 1 y asi hasta llegar al final de la cadena.
Cita de: aguml en 16 Junio 2013, 11:43 AM
¿Y por que no usar lo que ya existe como es strstr de string.h? Le indicas la cadena y la subcadena a buscar y te devuelve la posicion de esta si la encuentra, y si la encuentra pues vuelves a usarla pero esta vez empiezas a buscar desde el resultado obtenido mas 1 y asi hasta llegar al final de la cadena.
pues la verdad no me gusta como c maneja las cadenas a diferencia de c++ asi que me parece mejor codearmelas.Ademas algo aprendere :P
Cita de: amchacon en 16 Junio 2013, 10:52 AM
;-) ;-)
Deberías ampliar el programa para una lisa de palabras ^^
Por cierto una implementación en C++:
me gusta tu version en c++ ;D
Ya que no usamos strstr, ¿para qué hacer uso de la librería string?. Ya puestos lo hacemos todo "a pelo":
#include <stdio.h>
int main(void)
{
char cadena[60]="hola no es ni aholal hola sino hola ni halo y si holahola",
cadena1[]="hola";
int i,j,cont=0,num2=0;
for (i=0;cadena1[i];i++)
num2++;
for (i=0 ; cadena[i];i++)
if (cadena[i]==cadena1[0] && cadena[i-1]==' ' || i==0 )
{
for (j=1;j<=num2-1 ;j++)
{
if (cadena[i+j]!=cadena1[j]) break;
if (j == num2-1 && cadena[i+num2]==' ')
{
cont++;
printf ("\nEncontrada la palabra \"%s\" en la posicion %d",cadena1,i+1);
}
}
}
printf ("\nEncontradas %d coincidencias.",cont);
return 0;
}
Saluditos!
(http://i1280.photobucket.com/albums/a497/leosansan/leosan1/leones%20peques/leonpersonajepeque_zps25f3622f.jpg)