elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Ayuda cadena de ocurrencias
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda cadena de ocurrencias  (Leído 241 veces)
Skornz

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda cadena de ocurrencias
« en: 21 Abril 2017, 07:44 »

Cuenta_Ocurrencias
Desarrolle un programa que dadas dos cadenas cad1 y cad2, determine la cantidad de veces que aparece la cadena cad2 en la cadena cad1, para ello implemente la función Cuenta_Ocurrencias que recibe las cadenas cad1 y cad2 y retorna la cantidad de veces que aparece cad1 en cad2.
Ejemplo 1:
cad1=”esto es muy sencillo”
cad2=”es”
al llamar a la función cuenta_ocurrencias deberá de retornar 2
Ejemplo 2:
cad1=”todo es posible en la medida que tu crees que es posible”
cad2=”e”
al llamar a la función cuenta_ocurrencias deberá retornar 9
Código:
# include <iostream>
using namespace std;
int cuenta_ocurrencias(char[],char[]);
int main(){
char cad1[100];
char cad2[100];
cin.getline(cad1,100);
cin.getline(cad2,100);
cout<<cuenta_ocurrencias(cad1,cad2);
return 0;
}
int cuenta_ocurrencias(char cad1[], char cad2[]){
int palabra=0;
for(int i=1; cad1[i]!='\0'; i++){
for(int j=1; cad2[j]!='\0'; j++){
if(cad1[i]==cad2[j]){
++palabra;
}
}
}
return palabra;
}

Mi problema es que debo agregarle para mi programa funcionen de manera como esta en los ejemplos, ya que  para el primer ejemplo que muestro que dice "esto es muy sencillo" deberia de contarme solo las "es" pero lo que tengo hecho me cuenta tambien la "se". Agradeceria mucho si alguien fuera tan amable de ayudarme con este codigo que tengo.


En línea

ivancea96


Conectado Conectado

Mensajes: 3.294


ASMático


Ver Perfil WWW
Re: Ayuda cadena de ocurrencias
« Respuesta #1 en: 21 Abril 2017, 18:18 »

"es" tiene 2 letras. En el segundo bucle for, cada vez que una letra coincide, agregas 1 a palabra.
Esa no es la forma. Lo que tienes que ver es que toda la cadena coincida. Si coincide, entonces sumas 1 a palabra.


En línea

Fedex15

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda cadena de ocurrencias
« Respuesta #2 en: 21 Abril 2017, 19:51 »

Fijate este codigo si te sirve.

Código
  1. int cuenta_ocurrencias (char* str1, char* str2) {
  2. if ((str1[0] == '\0') || (str2[0] == '\0')) return 0;
  3. int str1Long = strlen(str1), str2Long = strlen(str2), iter = 0;
  4. int i, j;
  5. for (i = 0; i < str1Long; i++){
  6. for (j = 0; ((j < str2Long) && (str2[j] == str1[j+i])); j++);
  7. if (str2[j] == '\0'){ // Salio del for y si llego al final
  8. iter++;             // Es porque la cadena 2 estaba en la cadena 1
  9. }
  10. }
  11. return iter;
  12. }
  13.  
« Última modificación: 21 Abril 2017, 20:08 por Fedex15 » En línea

MAFUS


Desconectado Desconectado

Mensajes: 924



Ver Perfil
Re: Ayuda cadena de ocurrencias
« Respuesta #3 en: 21 Abril 2017, 20:45 »

Si puedes usar la biblioteca estándar puedes usar strstr que busca la primera ocurrencia entre dos cadenas, un poco de bricolaje y ya tienes tu función.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines