Pascal/Turbo Pascal - subcadenas

 
Vista:
sin imagen de perfil

subcadenas

Publicado por daicy (13 intervenciones) el 30/04/2014 13:01:29
hola buenos dias.
Ramon queria pedirte el favor si me puedes ayudar con un ejercicio que me esta dando problemas.
se trata de contar las veces que una subcadena esta dentro de una frase.Ambas ingresadas por teclado.

ejemplo.

frase ingresada: la palabra no calla
subcadena: la

resultado: el numero de veces que la subcadena "la" se encuentra dentro de la frase: " la palabra no calla"
es 3 veces.


frase ingresada: el coro del coronel sera coronado por coroncoro
subcadena: coro

resultado: el numero de veces que la subcadena "coro" se encuentra dentro de la frase: " el coro del coronel sera coronado" es de 5 veces

agradezco por favor lo mas eficiente posible una solucion, no se puede utilizar funciones de cadenas, solo bucles ( for o while ) y condicional if

gracias
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

subcadenas

Publicado por ramon (2158 intervenciones) el 01/05/2014 11:10:33
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
{Mira esto te ayudara}
 
 program cuentafrases;
   uses
     crt;
   const
    lafrase : string[47] = 'el coro del coronel sera coronado por coroncoro';
    subcadena : string[4] = 'coro';
 
  var
    i, d : integer;
    texto : string[4];
 
 
   function longtf(d : string) : integer;
   var
    z, t : integer;
    begin
       z := ord(d[0]);
       longtf := z;
    end;
 
   procedure buscasubcadena(d1 : string);
   var
     tomado : string[4];
     cont : integer;
   begin
      cont := 0;
      for i := 1 to longtf(subcadena) do
      begin
      subcadena[i] := upcase(subcadena[i]);
      end;
      for i := 1 to longtf(d1) do
      begin
        if upcase(d1[i]) = subcadena[1] then
        begin
           for d := 1 to longtf(subcadena) do
           begin
              tomado[d] := upcase(d1[(i - 1) + d]);
              tomado[0] := chr(d);
           end;
           if tomado = subcadena then
           cont := cont + 1;
        end;
      end;
        writeln('  Se Compone De ',cont,' Frases');
   end;
 
 
   begin
      clrscr;
      buscasubcadena(lafrase);
      readkey;
   end.
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