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, K-YreX)
| | |-+  Mostrar la cantidad de veces que una cadena se repite
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mostrar la cantidad de veces que una cadena se repite  (Leído 1,089 veces)
andoporto

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Mostrar la cantidad de veces que una cadena se repite
« en: 8 Febrero 2015, 11:42 »

Hola, tengo esta codificación que Mostrar la cantidad de veces que una cadena se repite en otra cadena, pero quiero que me tome en cuenta los espacios en balnco entre cada caracter, así esta línea
Código:
printf ("\n La cadena 5 se repite %d veces en la cadena 4",cantrepeticiones(cad4,cad5));
muestre
Código:
La cadena 5 se repite 1 veces en la cadena 4"
pero me muestra esto :
Código:
La cadena 5 se repite 0 veces en la cadena 4

Código:
#include <stdio.h>
#include <stdlib.h>
#define aMayusc(X)((X)>='a'&&(X)<='z'?(X)-32:(X))

int cantrepeticiones (char*,char*);

int main()
{
    char cad1[]= "ananana";
    char cad2[]= "ana";
    char cad3[]= "an";
    printf ("\n");
    char cad4[]= "mariamariamariamariana";
    char cad5[]= "maria jose";
    char cad6[]= "maria";
    puts(cad1);
    puts(cad2);
    puts(cad3);
    puts(cad4);
    puts(cad5);
    puts(cad6);
    printf ("\n La cadena 2 se repite %d veces en la cadena 1",cantrepeticiones(cad1,cad2));
    printf ("\n La cadena 3 se repite %d veces en la cadena 1",cantrepeticiones(cad1,cad3));
    printf ("\n La cadena 5 se repite %d veces en la cadena 4",cantrepeticiones(cad4,cad5));
    printf ("\n La cadena 6 se repite %d veces en la cadena 4",cantrepeticiones(cad4,cad6));
    printf ("\n");
    return 0;
}

int cantrepeticiones(char* c1, char* c2)
{
    int repeticiones=0;
    char* coindicencia=c1;  //Para guardar la posicion donde encuentra coincidencia con el primer caracter de la cadena a buscar
    char* inicio=c2; // Para poder volver al inicio de la cadena a buscar, en caso de no encontrarla completa
    while (*c1)
    {
        if (aMayusc(*c1)==aMayusc(*c2))
        {
            coindicencia=c1; //Guardo la posicion de la primera coincidencia
            while (*c1 && *c2 && aMayusc(*c1)==aMayusc(*c2))
            {
                c1++;
                c2++;
            }
            if (!*c2)
                repeticiones+=1;
            c1=coindicencia; // Vuelvo a la posicion de la primera coincidencia de caracteres
            c2=inicio; //Vuelvo al inicio del a cadena a buscar, por que el puntero quedo en el \0 o en la posicion donde no hubo coincidencia
        }
        c1++;
    }
    //printf("\n %d",repeticiones);
    return repeticiones;
}



En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Mostrar la cantidad de veces que una cadena se repite
« Respuesta #1 en: 9 Febrero 2015, 08:10 »

Código
  1.    char cad4[]= "mariamariamariamariana";
  2.    char cad5[]= "maria jose";

¿Y dónde exactamente se encuentra "cad5" dentro de "cad4"? Porque yo no soy capaz de encontrar "maria jose" en "cad4" por mas veces que lo miro.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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