/
Inicio :: Foros

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

UNA AYUDITA CON UN PROGRAMA DE CADENAS

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



Registrado: 05 Oct 2007
Mensajes: 4

MensajePublicado: 16/11/2007 9:01 am
Título: UNA AYUDITA CON UN PROGRAMA DE CADENAS

hola... consegui el codigo de un programita q trabaja con cadenas


la idea es esta:
primero ingresas la primera cadena
luego ingresas una subcadena de la cadena original
y por ultimo ingresas una cadena q reemplaze a la subcadena

pero en el programa ya vienen definidas la cadenas

quisiera saber como hago para el programa trabaje con las cadenas q yo quiera ingresar y no con las cadenas ya definidas

Código:
 

#include <stdio.h>
#include <conio.h>

/* Halla la longitud de una cadena, hace las veces de strlen */
int longitud(char *cadena)
{
   int i;
   for(i=0; ;i++)
     if(cadena[i]=='\0')
       break;
   return i;
}

/* Halla la posicion de aparicion de una subcadena en una cadena */
int posicion(char *cadena, char *subcadena)
{
   int i, j;

   for(i=0; i<longitud(cadena); i++)
   {
       if(cadena[i]==subcadena[0])
       {
     if(longitud(cadena)-i < longitud(subcadena))
        return -1;

     for(j=0; j<longitud(subcadena); j++)
     {
        if(cadena[i+j]!=subcadena[j])
      break;
     }
     if(j==longitud(subcadena))
       return i;
       }
   }

   return -1;
}

/*
   Busca una subcadena en una cadena, y la reemplaza por otra;
   retorna el numero de veces que se hizo el reemplazo
*/
int reemplazar(char *cadena, char *subcadena, char *reemplazo)
{
   int ocurrencias = 0;
   int i, indice, posiciones, temp, l_cadena, l_subcadena, l_reemplazo;

   l_cadena = longitud(cadena);
   l_reemplazo = longitud(reemplazo);
   l_subcadena = longitud(subcadena);

   for(;;)
   {
     indice = posicion(cadena, subcadena);
     if(indice==-1)
   break;
     else
     {
   for(i=indice; i<indice+l_reemplazo; i++)
       cadena[i]=reemplazo[i-indice];

   /* Si la longitud del reemplazo es menor que la de la subcadena,
     recorre caracteres siguientes, posiciones a la izquierda */
   posiciones=l_subcadena-l_reemplazo;
   if(posiciones>0)
      for(temp=i; temp<=l_cadena; temp++)
         cadena[temp]=cadena[temp+posiciones];

   ocurrencias++;
     }
   }

   return ocurrencias;
}

void main()
{
    clrscr();
    char *cadena="Hola esto es una prueba";
    char *subcadena="es";
    char *reemplazo="Z";

    printf("Cadena original: %s\n", cadena);
    printf("Buscar: %s\n", subcadena);
    printf("Reemplazo: %s\n\n", reemplazo);

    int temp=reemplazar(cadena, subcadena, reemplazo);

    printf("Coincidencias: %d\n", temp);
    printf("Cadena resultante: %s", cadena);
    getch();
}


 


gracias
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 95

MensajePublicado: 16/11/2007 5:39 pm
Título:

lo unico que tienes que hacer es pedir cadenas por teclado usando scanf de esta forma

Código:

void main()
{
    clrscr();
    char cadena[100];
    char subcadena[20];
    char reemplazo[20];

    printf("Ingresa Cadena original:"); scanf("%s",cadena);
    printf("Ingresa cadena a Buscar:"); scanf("%s",subcadena);
    printf("Ingresa Reemplazo:"); scanf("%s",reemplazo);

    int temp=reemplazar(cadena, subcadena, reemplazo);

    printf("Coincidencias: %d\n", temp);
    printf("Cadena resultante: %s", cadena);
    getch();
}


De esta manera cada vez que ejecutes el programa, te pedira que le ingreses las tres cadenas
_________________
Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón.
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