Pascal/Turbo Pascal - ejercicios realmente complicados

   
Vista:

ejercicios realmente complicados

Publicado por Luis Andres (12 intervenciones) el 17/12/2012 18:51:03
Buenas comunidad!, traigo unos ejercicios muy complicados de resolver, a ver quien los hace, yo he intentado pero me tranco, y no puedo resolverlo... alguno de estos ejercicios son:

1.- Hacer una función que reciba una cadena de caracteres y retorne la cadena encriptada sumando 2 al código ASCII de cada uno de sus caracteres.

2.- Hacer una función que pueda comparar dos cadenas de caracteres.

3.- Hacer una función que reciba una cadena de caracteres y retorne la cadena en mayúsculas.

4.- Realizar una función recursiva que nos diga si una cadena es palindrome.

Y el mas dificil de todos:

5.- Hacer una función que permita eliminar una secuencia de caracteres dentro de una cadena de caracteres a partir de una determinada posición X, un número determinado de dígitos N

La cuestion es, que ya hay procedimientos y funciones en pascal que los hacen, practicamente hay que hacer en el ultimo, la funcion DELETE, pero que va no logro comprenderlo....
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

ejercicios realmente complicados

Publicado por M2 (15 intervenciones) el 17/12/2012 21:06:30
1
2
3
4
5
6
7
8
9
10
FUNCTION esPalindromoRec(cadena:string;inicio,fin:byte):boolean;
       BEGIN
             IF fin-inicio+1<=1 THEN
                  esPalindromoRec:=true
             ELSE
                  IF cadena[inicio]<> cadena[fin] THEN
                       esPalindromoRec:=false
                   ELSE
                        esPalindromoRec:=esPalindromoRec(cadena,inicio+1,fin-1);
       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

ejercicios realmente complicados

Publicado por Luis Andres (12 intervenciones) el 17/12/2012 22:37:34
Muy bien! ése esta bueno, ese es el 4to, porque esrecursivo te iba a dar en pocas lineas... estoy dandole con el 2 y el 5, el primero ya lo hice, queda asi :

1
2
3
4
5
6
7
8
9
10
11
12
13
function encrip (s:string):string;
var
   i:integer;
   k:byte;
 begin
     for i:=1 to length(s) do
      begin
          k:=ord(s[i]);
          s[i] := chr(k + 2);
 
      end;
     encrip:=s;
 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

ejercicios realmente complicados

Publicado por Juan (7 intervenciones) el 18/12/2012 10:41:13
Ejercicio 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function eliminar (cad:string):string;
	var
		car,pos:integer;
	begin
		write('Escribe una cadena: ');
		readln(cad);
		write('¿Cuantos caracteres quieres borrar?: ');
		readln(car);
		write('¿A partir de que posicion quieres borrar los caracteres?: ');
		readln(pos);
		delete(cad,pos,car);
		write(cad);
	eliminar:=cad
	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

ejercicios realmente complicados

Publicado por Luis Andres (12 intervenciones) el 18/12/2012 11:46:53
Bien, ahora va la pregunta, yo creo que el ejercicio no quiere que se utilice el procedimiento delete... aunque no lo especifica, pero... bueno! como hubiera sido el ejercicio sin usar delete Juan ?
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

ejercicios realmente complicados

Publicado por ramon (2072 intervenciones) el 18/12/2012 18:01:09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function eliminar_una_secuencia_de_caracteres(cad : string;
desd, cuant : integer) : string;
var
    u, i : integer;
    temp : string;
begin
  for i :=  1 to desd do
   begin
   temp[l] := cad[i];
   temp[0] := chr(i);
   end;
    u := desd + 1;
   for i := (desd + cuant) to length(cad) do
   begin
          temp[l] := cad[i];
          temp[0] := chr(u);
          u := u + 1;
    end;
{delete(cad,desd,cuant);}
eliminar_una_secuencia_de_caracteres := copy(temp,1,length(temp));
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

ejercicios realmente complicados

Publicado por Graciela (2 intervenciones) el 07/08/2016 17:20:14
que significa temp.....a que hace alusion......a mi la maquina..no me lo compila....que puedo hacer...........
gracias chicos......repositivo lo de ustedes.......los felicito
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

ejercicios realmente complicados

Publicado por ramon (2072 intervenciones) el 07/08/2016 22:27:27
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
{Mira esto funciona  copya y pega en el bloc de notas y guardalo como pas o sea   nombre.pas
 
Temp es la cadena temporal donde se trabaja nada  mas esto esta en pascal 7.0 no en otro}
 
program cotacadena;
 uses
    crt;
 
  var
    cad : string;
    ini, cua : integer;
 
 
  function eliminar_una_secuencia_de_caracteres(cad : string;
                                         desd, cuant : integer) : string;
 
   var
    u, i : integer;
    temp : string;
  begin
      for i :=  1 to desd do
      begin
        temp[i] := cad[i];
        temp[0] := chr(i);
      end;
        u := desd + 1;
         for i := (desd + cuant) to length(cad) do
         begin
            temp[u] := cad[i];
            temp[0] := chr(u);
            u := u + 1;
         end;
         eliminar_una_secuencia_de_caracteres := copy(temp,1,length(temp));
      end;
 
   begin
      clrscr;
      write('   Entre Cadena : ');
      readln(cad);
      write('  posicion inicio corte : ');
      readln(ini);
      write('  cuantos caracteres : ');
      readln(cua);
      write(eliminar_una_secuencia_de_caracteres(cad,ini,cua));
      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

ejercicios realmente complicados

Publicado por ramon (2072 intervenciones) el 18/12/2012 17:46:13
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
{Podría servir}
 
 program ejercicios;
   uses
     crt;
  var
    cadena, cadena1 : string;
    pos, quit : integer;
 
   function  cadena_encriptada(ca : string) : string;
   var
     i : integer;
   begin
      for i := 1 to length(ca) do
      ca[i] := char(ord(ca[i]) + 2);
      cadena_encriptada := ca;
   end;
 
   function comparar_dos_cadenas(ca1, ca2 : string) : boolean;
   var
      i : integer;
   begin
      comparar_dos_cadenas := true;
      for i := 1 to length(ca1) do
      if upcase(ca1[i]) <> upcase(ca2[i]) then
      comparar_dos_cadenas := false;
   end;
 
   function cadena_en_mayusculas(cad : string) : string;
   var
     i : integer;
   begin
      for i := 1 to length(cad) do
      cad[i] := upcase(cad[i]);
      cadena_en_mayusculas := cad;
   end;
 
   function cadena_es_palindrome(cad : string) : boolean;
   var
     i : integer;
   begin
       cadena_es_palindrome := true;
      for i := 1 to length(cad) do
      if upcase(cad[i]) <> upcase(cad[length(cad) - (i-1)]) then
      cadena_es_palindrome := false;
   end;
 
 function eliminar_una_secuencia_de_caracteres(cad : string;
                                   desd, cuant : integer) : string;
 begin
     delete(cad,desd,cuant);
     eliminar_una_secuencia_de_caracteres := copy(cad,1,length(cad));
 end;
 
  procedure menu;
  var
    tecl : char;
  begin
    repeat
    clrscr;
    writeln('******* Menu Jeneral ********');
    writeln;
    writeln('   1 = Cadena Encriptada');
    writeln('   2 = Comparar Dos Cadenas');
    writeln('   3 = Cadena A Mayusculas');
    writeln('   4 = La Cadena Es Palindrome');
    writeln('   5 = Eliminar Una Secuencia De Caracteres De Una Cadena');
    writeln('   6 = Salir');
    writeln;
    writeln('<<<<<<< Elija Opcion >>>>>>>');
    repeat
       tecl := readkey;
    until tecl in['1','2','3','4','5','6'];
   case tecl of
  '1' : begin
           clrscr;
           writeln;
           write('   Entre Cadena : ');
           readln(cadena);
           writeln('   ',cadena_encriptada(cadena));
           writeln;
           writeln('----- Pulse [Enter] ------');
           readln;
           end;
  '2' : begin
           clrscr;
           writeln;
           write('   Entre Cadena 1 : ');
           readln(cadena);
           write('   Entre Cadena 2 : ');
           readln(cadena1);
           writeln;
           if comparar_dos_cadenas(cadena,cadena1) = true then
           writeln('  Las Cadenas Son : Iguales')
         else
           writeln('  Las Cadenas No Son : Iguales');
           writeln;
           writeln('----- Pulse [Enter] ------');
           readln;
        end;
  '3' : begin
           clrscr;
           writeln;
           write('   Entre Cadena : ');
           readln(cadena);
           writeln;
           writeln('   ',cadena_en_mayusculas(cadena));
           writeln;
           writeln('----- Pulse [Enter] ------');
           readln;
        end;
  '4' : begin
           clrscr;
           writeln;
           write('   Entre Cadena : ');
           readln(cadena);
           writeln;
           if cadena_es_palindrome(cadena) = true then
            writeln('   La Cadena Es palindrome')
         else
            writeln('   La Cadena No Es palindrome');
           writeln;
           writeln('----- Pulse [Enter] ------');
           readln;
        end;
  '5' : begin
           clrscr;
           writeln;
           write('   Entre Cadena : ');
           readln(cadena);
           write('   Posicion Inicio : ');
           readln(pos);
           write('   Quitar Cuantos  : ');
           readln(quit);
           writeln;
  writeln('   ',eliminar_una_secuencia_de_caracteres(cadena,pos,quit));
  writeln;
  writeln('----- Pulse [Enter] ------');
  readln;
     end;
   end;
    until tecl = '6';
  end;
 
 
   begin
      clrscr;
      menu;
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar