/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

[c++] ayuda con funcion strstr

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
k4nnon



Registrado: 24 Abr 2014
Mensajes: 1

MensajePublicado: 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

MensajePublicado: 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. Wink

Saluditos!.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7516
Ubicación: Mexico

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com