Pascal/Turbo Pascal - Ayuda con arreglos

   
Vista:

Ayuda con arreglos

Publicado por LunaticoDiamante (20 intervenciones) el 01/06/2013 20:34:25
Agradeceria a alguien que me pueda dar una mano con el siguiente problema de arreglos, estoy estudiando y este es un ejercicio de parcial, les agradeceria su ayuda.

Dado el arreglo ARRSECUENCIAS de char, que contiene secuencias de caracteres separadas por uno o más blancos. Se pide que ubique las secuencias que coincidan completamente con el arreglo ARRMODELO (desde el principio al primer espacio en blanco) y las reemplace por el arreglo dado ARRNUEVA. Hacer los corrimientos necesarios para que entre toda la secuencia, si no hay suficiente espacio descartar los caracteres del final.
No utilizar strings ni estructuras auxiliares, solo variables.

Ejemplo:
ARRSECUENCIAS:
[ | a | a | b | | a | a | | b | b | b | | c | c | | a | a | | | ]

ARRMODELO:
[ a | a | | | ]

ARRNUEVA:
[ c | c | c | | | ]

Luego de insertar el resultado seria, ARRSECUENCIAS:
[ | a | a | b | | c | c | c | | b | b | b | | c | c | | c | c | c | | ]
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

Ayuda con arreglos

Publicado por ramon (2072 intervenciones) el 03/06/2013 17:39:53
{Comento los arreglos o arrays una vez dimensionados no se pueden modificar en pascal por lo
tanto según tu presentación seria esto como quedaría ano ser que este tomando yo tu
información mal.

[ | a | a | b | | a | a | | b | b | b | | c | c | | a | a | | | ]

[ a | a | | | ]
[ c | c | c | | | ]

[ | a | a | b | | c | c | c | | b | b | b | | c | c | | c | c | c | | ]



| a | a | b | | a | a | | b | b | b | | c | c | | a | a | | |

[ | a | a | b | | a | a | | b | b | b | | c | c | | c | c | c |

31 caracteres del array inicial.
la zona c | c | c no es correcta mente como el modelo y si lo es a | a | | | la ultima esto es correcto
asi si o no.

referente a No utilizar strings ni estructuras auxiliares, solo variables se supone que un array de
variable tempo : array[1..31] of char podría entrar en esas variables que tu espones o no.
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

Ayuda con arreglos

Publicado por ramon (2072 intervenciones) el 03/06/2013 21:25:16
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
{Mira así quedaría}
 
program letras;
 uses
   crt;
  const
     np = 31;
 ARRSECUENCIAS : array[1..np] of char = (
     ' ', 'a',' ','a',' ','b',' ',' ','a',' ','a',' ',' ','b',' ',
     'b',' ','b',' ',' ','c',' ','c',' ',' ','a',' ','a',' ',' ',' ');
 
 ARRMODELO : array[1..6] of char = (
                   'a',' ','a',' ',' ',' ');
 
 ARRNUEVA : array[1..8] of char = (
      'c',' ','c',' ','c',' ',' ',' ');
  type
     datos = array[1..np] of char;
 
  var
    dat : datos;
    t, n, cc, tot, lon, i : integer;
    est : boolean;
 
  begin
      clrscr;
      lon := sizeof(ARRMODELO);
      tot := sizeof(ARRSECUENCIAS);
      cc := 0;
      for t := 1 to tot do
      write(ARRSECUENCIAS[t]);
      writeln;
      t := 0;
    repeat
      for i := 1 to lon do
      begin
      if ARRMODELO[i] = ARRSECUENCIAS[t + i] then
      begin
      est := true;
      cc := cc + 1;
      end
    else
      est := false;
      end;
      if (est = true) and (cc = lon) then
      begin
          for n := 1 to sizeof(ARRNUEVA) do
          begin
          if t + n > np then
          break
        else
          ARRSECUENCIAS[t + n] := ARRNUEVA[n];
          end;
      end;
      t := t + lon - 1;
      cc := 0;
      until t > tot;
      for t := 1 to tot do
      write(ARRSECUENCIAS[t]);
      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