Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Funcion para encontrar cantidad de ocurrencias

Estas en el tema de Funcion para encontrar cantidad de ocurrencias en el foro de C/C++ en Foros del Web. Hola. Hay alguna funcion en c para saber cuantas veces se repite en una cadena una secuencia. Por ejemplo me dan aaaaabbaaaaabbaaaabbaaa. Por ejemplo le ...
  #1 (permalink)  
Antiguo 16/09/2010, 17:33
 
Fecha de Ingreso: mayo-2006
Mensajes: 79
Antigüedad: 17 años, 11 meses
Puntos: 0
Funcion para encontrar cantidad de ocurrencias

Hola. Hay alguna funcion en c para saber cuantas veces se repite en una cadena una secuencia.
Por ejemplo me dan aaaaabbaaaaabbaaaabbaaa.

Por ejemplo le paso esa cadena preguntando por la cantidad de veces q se repite "bb" y me devuelva 3.
Hay algo que ya exista o sino como hago?
  #2 (permalink)  
Antiguo 16/09/2010, 22:45
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Funcion para encontrar cantidad de ocurrencias

Puedes crearte una función que recorra la cadena utilizando strstr para contabilizar las veces que aparece la secuencia o subcadena especificada.
Ejemplo:
Código C:
Ver original
  1. #include <string.h>
  2. #include <stdio.h>
  3.  
  4.  
  5. int strstr_counter(const char* s1, const char* s2){
  6.     size_t len = strlen(s2);
  7.     int match = 0;
  8.     char* pch = strstr(s1, s2);
  9.     while(pch != NULL){
  10.         pch = strstr(s1 = pch + len, s2);
  11.         match++;
  12.     }
  13.     return match;
  14. }
  15.  
  16.  
  17. int main(){
  18.  
  19.     printf("%d\n", strstr_counter("aaaaabbaaaaabbaaaabbaaa", "bb"));
  20.     printf("%d\n", strstr_counter("aaaaabbaaaaabbaaaabbaaa", "a"));
  21.     printf("%d\n", strstr_counter("aaaaabbaaaaabbaaaabbaaa", "aaaaa"));
  22.     printf("%d\n", strstr_counter("aaaaabbaaaaabbaaaabbaaa", "b"));
  23.     printf("%d\n", strstr_counter("aaaaabbaaaaabbaaaabbaaa", "dd"));
  24.  
  25.     return 0;
  26. }

Etiquetas: cantidad, encontrar, funcion, ocurrencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:56.