Dev - C++ - Buscar y reemplazar

 
Vista:
sin imagen de perfil

Buscar y reemplazar

Publicado por Sebastian Adolfo (11 intervenciones) el 22/04/2017 23:51:51
Hola, estoy haciendo un codigo que busque y reemplaze una palabra pero se me prohibe usar funciones excepto el strlen y el strcpy ... apenas y pude hacer que busque una palabra y me diga cuantas veces la encuentra lo que no logro entender es como hacer que donde busque reemplaze por la que el usuario digita... ayuda por favor es algo que debo entregar el domingo... abajo el codigo de lo que hice
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <string.h>
using namespace std;
int busca(char *frase,char *palabra){
    int cont1=0;
    int ind = 0;
    int letra = 0;
 
    for(int x=0; x<strlen(frase); x++){
 
        if(frase[x] == '\0'){ // si esto se cumple llego al final de la oracion 
            break;
        }
 
        if(frase[x] == palabra[0]){
 
            ind = 0;
 
            letra = 0;
            for(int j = x; j<x+strlen(palabra); j++){
 
                if(frase[j] == palabra[ind]){
 
                    letra++;
                    ind++;
 
                }
 
            }
 
            if (letra == strlen(palabra)) {
                cont1++;
            }
 
        }
 
    }
    return cont1;
}
 
int main() {
 
    int gran=0;
    char frase[50];
    char palabra[50];
 
 
    cout<<"Ingrese la cadena de caracter: "<<endl;
    fflush(stdin);
    gets(frase);
 
    cout<<"Ingrese palabra a buscar: "<<endl;
    fflush(stdin);
    gets(palabra);
 
 
 
    gran=busca(frase,palabra);
 
    cout<<gran;
 
    return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Buscar y reemplazar

Publicado por agustin (522 intervenciones) el 23/04/2017 09:33:14
No es correcto usar fflush para el buffer de entrada ya que no fue pensado para eso, hay formas de hacer lo mismo sin el.
Ya tienes el 99% del código, te explico lo que necesitas de mas:
Un int para indicar la posición anterior inicializado a 0.
Un int para indicar el final de la parte a copiar inicializado a 0.
Un buffer auxiliar de tamaño variable.

Lo primero es buscar la palabra y cuando la encuentres haces que el int de final de parte a copiar sea igual que la posición actuall menos el largo de la palabra. Con eso ya tienes el primer bloque a copiar con strcpy al buffer auxiliar. Copias la nueva palabra a continuación en el buffer auxiliar. Ahora continuas igual con todas las ocurrencias pero cada vez que vayas a copiar una nueva parte en AUX necesitas strlen para saber en que punto continuar.
¿por qué dije que el buffer auxiliar debía ser variable en tamaño? Porque podrías buscar todas las ocurrencias y dependiendo del tamaño de ambas palabras, del número de ocurrencias, y del tamaño de la frase podrías calcular el tamaño de aux:
1
char *aux=new char[strlen (frase)-(strlen (palabra)*nocurrencias)+(strlen (nueva_palabra)*nocurrencias)];
Con lo que tendrías un buffer del tamaño justo y necesario donde al final obtendrias la frase final.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Buscar y reemplazar

Publicado por Sebastian Adolfo (11 intervenciones) el 23/04/2017 20:15:51
y como aplico eso a mi codigo, digo en que parte iria ... ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar