| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
k4nnon
Registrado: 24 Abr 2014 Mensajes: 1
| Publicado: 24/04/2014 8:32 am | | | Título: [c++] ayuda con funcion strstr |
| hola estoy asiendo un ejersicio que nos mando nuestro profesor el cual debemos buscar una frase dentro de un string, donde la frase esta compuesto por 2 palabras "heavy metal" .
un ejemplo heavymetalisheavymetal
la salida es 4 ya que se puede generar 4 veces la frase heavy metal
hasta el momento tengo esto
| Código: | #include <stdlib.h> #include <stdio.h> #include <string.h>
int main(){ char a[1000],b[20]="heavyHEAVY",c[20]="metalMETAL"; int i,j,suma=0; gets(a); for(i=0;i<strlen(a);i++) { if(strstr(a,b)!=NULL) { for(j=i;j<strlen(a);j++) if(strstr(a,c)!=NULL) { suma++; } else { break; } } } printf("\n%d",suma); return 0; }
|
pero el programa siempre me arroja 0. plz si alguien me puede guiar.
saludos |
| | Volver arriba | |  | leosan
Registrado: 19 Abr 2012 Mensajes: 730 Ubicación: GRAN CANARIA
| Publicado: 24/04/2014 10:31 am | | | Título: Re: [c++] ayuda con funcion strstr |
| | k4nnon escribió: | hola estoy asiendo un ejersicio que nos mando nuestro profesor el cual debemos buscar una frase dentro de un string, donde la frase esta compuesto por 2 palabras "heavy metal" .
un ejemplo heavymetalisheavymetal
la salida es 4 ya que se puede generar 4 veces la frase heavy metal
|
A mi me da tres si el orden importa:
| Código: | #include <stdlib.h> #include <stdio.h> #include <string.h>
int main(){ char a[1000]="heavymetalisheavymetalmetal",b[20]="heavy",c[20]="metal",*p,*q; int i=0,j,suma=0; for (p = a; (p = strstr(p, "heavy")) != NULL ; p += 5){ for (q = p; (q = strstr(q, "metal")) != NULL ; q += 5) i++; } printf("\n%d",i); return 0; } |
O bien 4 si el orden no importa:
| Código: | #include <stdlib.h> #include <stdio.h> #include <string.h>
int main(){ char a[1000]="heavymetalisheavymetalmetal",b[20]="heavy",c[20]="metal",*p,*q; int i=0,j,suma=0; for (p = a; (p = strstr(p, "heavy")) != NULL ; p += 5){ for (q = p; (q = strstr(q, "metal")) != NULL ; q += 5) i++; } for (p = a; (p = strstr(p, "metal")) != NULL ; p += 5){ for (q = p; (q = strstr(q, "heavy")) != NULL ; q += 5) i++; } printf("\n%d",i); return 0; } |
Reconozco que no termina de gustarme la segunda solución, perro es lo que se me ocurre. 
Saluditos!. |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7517 Ubicación: Mexico
| Publicado: 24/04/2014 1:59 pm | | | Título: Re: [c++] ayuda con funcion strstr |
| | k4nnon escribió: | estoy asiendo un ejersicio que nos mando nuestro profesor el cual debemos buscar una frase dentro de un string, donde la frase esta compuesto por 2 palabras "heavy metal" .
un ejemplo heavymetalisheavymetal
la salida es 4 ya que se puede generar 4 veces la frase heavy metal |
Seria mejor que indicaras el enunciado completo ya que el ejemplo no aclara todas las dudas. Es obvio que no buscas la frase literalmente ("heavy metal" no es una subcadena de "heavymetalisheavymetal") y no indicas que precauciones tomar si alguna palabra de la subcadena es un prefijo de otra (por ejemplo si se busca la "frase" "pepe pepenador")
Por cierto todo tu programa es C, si estas aprendiendo C++ deberías utilizar la clase string y su función miembro find.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |