Pascal/Turbo Pascal - Ejercicios en pascal

 
Vista:

Ejercicios en pascal

Publicado por Victor (5 intervenciones) el 17/03/2013 14:33:07
Hola a todos estoy un poco trabado en pascal y me gustaría que alguien me ayudará ha realizar estos ejercicios.
Muchas Gracias
===========================================================================
Ejercicio1


escriba un programa que pida al usuario una cadena de caracteres. A continuación, pase dicha cadena de caracteres a una tabla con los enteros correspondientes a cada carácter. Finalmente el programa mostrará al usuario la tabla de enteros obtenida.

Escriba el programa en un fichero llamado Unidad7_1_2.pas y envíelo adjunto a un correo. Si lo desea, puede usar la sección de Respuesta para realizar sus comentarios.






==========================================================================
Ejercicio2

Escriba un procedimiento que reciba una cadena de caracteres y la devuelva invertida. Es decir, si recibe ‘hola’ devolverá ‘aloh’. A continuación, introduzca el procedimiento en un programa que pida al usuario una cadena, se asegure que no supera una longitud máxima definida en una constante, invoque el procedimiento anterior, y muestre por pantalla la cadena resultado
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 en pascal

Publicado por ramon (2158 intervenciones) el 17/03/2013 16:43:20
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
{A ver esto servirá}
 
  program cadenas;
  uses
    crt;
  const
     long = 12; {Máxima longitud cadena modificar a la longitud que quieras asta 255 dela longitud
                          de un string}
 
  var
    cadena : string;
    cont : integer;
    tabla : array[1..long] of byte;
 
 
  procedure entracadena;
  var
    temp : string;
  begin
     write('  Entre Cadena De Caracteres Un Max De [',long,'] : ');
     readln(temp);
     if length(temp) > long then
     begin
       cadena := copy(temp,1,long);
       cadena[0] := chr(long);
     end
   else
     begin
       cadena := temp;
       cadena[0] := chr(length(temp));
     end;
  end;
 
  procedure presenta_tabla(s : string);
  begin
      clrscr;
      writeln('<<<< Los Enteros De La Cadena Son >>>>');
      writeln;
      for cont := 1 to length(s) do
      tabla[cont] := ord(s[cont]);
      write(' Los Enteros = ');
      for cont := 1 to length(s) do
      write('  ',tabla[cont]);
      writeln;
      writeln;
      writeln('----- La Cadena Es = [',cadena,'] -------');
      writeln;
      writeln('   *** Pulse [Enter] ***');
      readln;
  end;
 
  procedure inviertecadena(s : string);
  var
     t : integer;
  begin
      writeln;
      write('   La Cadena Inversa Es = ');
      for t := length(s) downto 1 do
      write(s[t]);
      writeln;
      writeln;
      writeln('>>>> Pulse [Enter] <<<<<');
      readln;
  end;
 
  procedure menu;
  var
    tecla : char;
    sal : boolean;
  begin
     sal := false;
     repeat
     clrscr;
     writeln('***** Menu General  *****');
     writeln;
     writeln('   1 = Cadena a Enteros');
     writeln('   2 = Cadena Invertida');
     writeln('   3 = Salir');
     writeln;
     writeln('<<<< Elija Opcion >>>>');
     tecla := readkey;
  case tecla of
 '1' : begin
       clrscr;
       entracadena;
       presenta_tabla(cadena);
       end;
 '2' : begin
       clrscr;
       entracadena;
       inviertecadena(cadena);
       end;
 '3' : sal := true;
    end;
     until sal = true;
  end;
 
  begin
     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
0
Comentar

Ejercicios en pascal

Publicado por Victor (4 intervenciones) el 17/03/2013 18:17:45
Haber necesito ayuda con el siguiente ejercicio(Importante leer la letra en negrita
program valores;
var
letra:char;
numero:integer;
valornumerico:integer;
valorcaracter:char;
begin
writeln('Introduzca una letra: ');
readln(letra);
valornumerico:=ord(letra);
writeln('El valor numerico de su letra es: ',valornumerico);
writeln('Introduzca un numero: ');
readln(numero);
valorcaracter:=Chr(numero);
writeln('Su numero corresponde al caracter: ',valorcaracter);
end.

Teniendo en cuenta las funciones que acaba de ver en la cuestión 1, escriba un programa que pida al usuario una cadena de caracteres. A continuación, pase dicha cadena de caracteres a una tabla con los enteros correspondientes a cada carácter. Finalmente el programa mostrará al usuario la tabla de enteros obtenida.
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 en pascal

Publicado por ramon (2158 intervenciones) el 18/03/2013 12:26:34
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
{Teniendo en cuenta las funciones que acaba de ver en la cuestion 1,
   escriba un programa que pida al usuario una cadena de caracteres.
   A continuacion, pase dicha cadena de caracteres a una tabla con los
   enteros correspondientes a cada caracter.
   Finalmente el programa mostrara al usuario la tabla de enteros obtenida.}
 
{Empleando tu mismo sistema pero trabajando sobre cadena no sobre caracter
 y presento los números que corresponden a cada letra}
 
  program valores;
  uses
     crt;
  var
    letra : char;
    numero : integer;
    valornumerico : integer;
    valorcaracter : char;
 
 
    function entracadena : string;
    var
       temp : string;
     begin
        write('  Entre Cadena De Caracteres : ');
        readln(temp);
        entracadena := temp;
    end;
 
  procedure presenta_tabla;
  var
     t : integer;
     cad : string;
  begin
      clrscr;
      cad := entracadena;
      writeln;
      for t := 1 to length(cad) do
      write('  ',ord(cad[t]));
      writeln;
      writeln;
      writeln('   *** Pulse [Enter] ***');
      readln;
  end;
      begin
      presenta_tabla;
 
     {write('Introduzca una letra : ');
     readln(letra);
     valornumerico := ord(letra);
     writeln('El valor numerico de su letra es: ',valornumerico);
     write('Introduzca un numero : ');
     readln(numero);
     valorcaracter := Chr(numero);
     writeln('Su numero corresponde al caracter: ',valorcaracter);}
  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 en pascal

Publicado por Victor (5 intervenciones) el 19/03/2013 14:40:27
Vamos a realizar a lo largo de varias cuestiones un programa que "gestiona" colecciones de cuadros en una galería de arte.

Cree un programa que utilice una tabla donde se almacenarán los precios de una colección de cuadros. Para ello será necesario:

• Definir una constante de nombre TAMCOLECCION que representa el número de cuadros que tendrán las colecciones. Puede comenzar definiendo esta constante con un valor de 4.
• Un tipo de datos de nombre coleccion que será una tabla de tamaño TAMCOLECCION. Cada elemento almacena el precio de un cuadro, y el número del cuadro coincide con su posición en la tabla.
El alumno deberá además codificar en esta actividad:
o Un procedimiento de nombre lee_tabla que solicite al usuario que introduzca los precios de la colección de cuadros. Este procedimiento debe recibir como parámetros la tabla donde almacenar los precios y el número de cuadros a leer.
o Un procedimiento de nombre imprime_tabla que presente por pantalla los precios de la colección de cuadros, junto al número de cuadro. Este procedimiento de forma similar al anterior, recibe como parámetros la tabla y el número de cuadros.

Para comenzar se proporciona el "esqueleto inicial de este programa":

Program Galeria;

(*-- Constantes globales al programa -- *)
Const


(*-- Tipos globales al programa -- *)
Type


(*-- Funciones y procedimientos -- *)

(*-- Variables del módulo principal -- *)
Var
precios : Coleccion;

(*-- Programa Principal -- *)
Begin
lee_tabla(precios, TAMCOLECCION);
imprime_tabla(precios, TAMCOLECCION);
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 en pascal

Publicado por ramon (2158 intervenciones) el 19/03/2013 16:32:47
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
{A ver ser vira}
 
Program Galeria;
    (* Unidad vasica de pascal *)
uses
    crt;
(*-- Constantes globales al programa -- *)
Const
    tamacoleccion = 4;
 
(*-- Tipos globales al programa -- *)
Type
   coleccion = array[1..tamacoleccion] of real;
 
   (*-- Variables del módulo principal -- *)
 Var
  precios : Coleccion;
  t : integer;
  datos : boolean;
 
(*-- Funciones y procedimientos -- *)
  procedure leertabla(var precios : coleccion);
  var
    pre : coleccion;
  begin
     clrscr;
     for t := 1 to tamacoleccion do
     begin
     write('   Entre Precio Del Cuadro N.',t,' : ');
     readln(pre[t]);
     end;
      precios := pre;
      datos := true;
   end;
 
  procedure imprimetabla(pre : Coleccion);
  begin
     if datos = true then
     begin
         for t := 1 to tamacoleccion do
         writeln('N. : ',t,'   Precio : ',pre[t]:8:2);
         writeln;
         writeln('**** Pulse Enter ****');
         readln;
     end
   else
       begin
          writeln('.... La Tabla Esta Vacia Pulse Enter ....');
          readln;
       end;
  end;
 
(*-- Programa Principal -- *)
Begin
    datos := false;
    leertabla(precios);
    writeln;
    imprimetabla(precios);
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

Ejercicios en pascal

Publicado por Victor (5 intervenciones) el 20/03/2013 13:28:51
Muchas Gracias
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 en pascal

Publicado por Victor (5 intervenciones) el 20/03/2013 14:56:08
Ayuda con los siguientes ejercicios
========================================================================
Ejercicio2(Siguiendo las indicaciones)
_____________________________
Partiendo del programa de la cuestión anterior, sin modificar los procedimientos y funciones ya codificados, añada una función de nombre suma_coleccion que recorra la tabla y devuelva como resultado de la función, el valor total de la colección de cuadros.

Modifique a continuación el programa principal para que después de leer e imprimir la tabla, calcule la suma de la colección utilizando esta función, y la imprima por pantalla. Nuestro módulo principal debería tener la estructura:

(*-- Variables -- *)
Var
precios : Coleccion;
suma: real;

(*-- Programa Principal -- *)
Begin
lee_tabla(precios, TAMCOLECCION);
imprime_tabla(precios, TAMCOLECCION);

(* Aquí iría la llamada a la función suma_coleccion *)

(* Presentación de resultados *)
writeln('> Valor coleccion: ', suma:0:2);
End.

Y el resultado por pantalla debe ser:

Símbolo de MS - DOS

C:\cursopro>ppc386 usuario_t7_2.pas
Free Pascal Compiler version 1.0.4 [2000/12/30] for i386
Copyright (c) 1993-2000 by Florian Klaempfl
Target OS: Win32 for i386
Compiling usuario_t7_2.pas
Linking usuario_t7_2.exe
64 Lines compiled, 5.2 sec

C:\cursopro>usuario_t7_2.exe
Introduza los precios
Cuadro 1: 125
Cuadro 2: 250
Cuadro 3: 375
Cuadro 4: 450
> Precio cuadro 1: 125.00
> Precio cuadro 2: 250.00
> Precio cuadro 3: 375.00
> Precio cuadro 4: 450.00
> Valor coleccion: 1200.00

C:\cursopro>

==========================================================================
Ejercicio3
Partiendo del programa anterior, sin modificar los procedimientos y funciones ya codificados, introduzca un procedimiento de nombre limites que devolverá como parámetros por referencia el máximo y el mínimo de la colección.

RECORDATORIO:
A la hora de buscar el mínimo (o el máximo) dentro de una tabla se procede:

Se le da como valor inicial al mínimo, el primer valor de la tabla.
Se recorre el resto de la tabla y en cada iteración:
a) Se comprueba si el valor de la tabla es menor que mínimo. a.1) Si lo es al mínimo se le da el valor de dicho elemento.
a.2) Si es mayor no se hace nada y se pasa al siguiente elemento.

En el programa principal, la invocación deberá ser de la forma:

(*-- Variables -- *)
Var
precios1 : Coleccion;
min1, max1: real;

(*-- Programa Principal -- *)
Begin
lee_tabla(precios1, TAMCOLECCION);
imprime_tabla(precios1, TAMCOLECCION);

(* Aquí iría la invocación a limites *)

(* Presentación de resultados *)
Writeln('El maximo es ', max1:0:1, ' y el mínimo ' , min1:0:1);
End.
====================================================
Ejercicio4

Modificar el procedimiento limites de la cuestión anterior para que además devuelva como parámetros por referencia, la posición en la tabla (el número del cuadro) donde se producen el máximo y el mínimo.

El programa principal sería similar a:

(*-- Programa Principal -- *)
Begin
lee_tabla(precios1, TAMCOLECCION);
imprime_tabla(precios1, TAMCOLECCION);

(* Aquí iría la invocación del nuevo procedimiento límites *)

Writeln('El maximo es ', max1:0:1, ' en la posicion ', pos_max1);
Writeln('El minimo es ', min1:0:1, ' en la posicion ', pos_min1);

End.
===================================================
Ejercicio5

Partiendo del programa anterior, sin modificar los procedimientos y funciones ya codificados, el alumno deberá añadir un procedimiento de nombre busca_precio para un cliente que desea gastar una cantidad exacta (ni más ni menos).

Este procedimiento recibe como parámetro (entre otros) la cantidad a buscar en la tabla. Es decir que esta cantidad deberá ser pedida al usuario fuera del procedimiento, en este caso en el módulo principal.

Presentará por pantalla un mensaje cada vez que al recorrer la tabla encuentre un cuadro con el precio buscado, indicando su precio y su número. Si no encuentra ningún libro, deberá presentar un único mensaje al final del procedimiento indicando tal circunstancia.

Además el alumno deberá incluir en el módulo principal, la petición de búsqueda en un bucle que solicite la petición del precio a buscar hasta que el usuario introduzca el valor cero.

Escriba el programa en un fichero llamado Unidad7_2.pas y envíelo adjunto a un correo.

Si lo desea puede usar la sección de Respuesta para realizar sus comentarios.
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 en pascal

Publicado por ramon (2158 intervenciones) el 20/03/2013 18:16:04
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
150
151
{A ver si ayuda esto}
 
 Program Galeria;
    (* Unidad vasica de pascal *)
uses
    crt;
(*-- Constantes globales al programa -- *)
Const
    tamacoleccion = 4;
 
(*-- Tipos globales al programa -- *)
Type
   coleccion = array[1..tamacoleccion] of real;
 
   (*-- Variables del módulo principal -- *)
 Var
  precios : Coleccion;
  t : integer;
  datos : boolean;
  min, max : real;
  posmin, posmax : integer;
 
(*-- Funciones y procedimientos -- *)
  procedure leertabla(var precios : coleccion);
  var
    pre : coleccion;
  begin
     clrscr;
     for t := 1 to tamacoleccion do
     begin
     write('   Entre Precio Del Cuadro N.',t,' : ');
     readln(pre[t]);
     end;
      precios := pre;
      datos := true;
   end;
 
  procedure imprimetabla(pre : Coleccion);
  begin
     if datos = true then
     begin
         for t := 1 to tamacoleccion do
         writeln('   N. : ',t,'   Precio : ',pre[t]:8:2);
         writeln;
         writeln('**** Pulse Enter ****');
     end
   else
       begin
          writeln('.... La Tabla Esta Vacia Pulse Enter ....');
       end;
  end;
 
  function sumacoleccion(pre : Coleccion) : real;
  var
     valor : real;
  begin
     clrscr;
     sumacoleccion := 0;
     if datos = true then
     begin
     valor := 0.0;
     for t := 1 to tamacoleccion do
     begin
     valor := valor + pre[t];
     writeln('   Precio Cuadro N. ',t,' : ',pre[t]:0:2);
     end;
     sumacoleccion := valor;
     write('El Total De La Coleccion Es : ');
   end
   else
       begin
          writeln('.... La Tabla Esta Vacia Pulse Enter ....');
       end;
  end;
 
  procedure minimomaximo(pre : coleccion; var min, max : real;
                                         var posmin, posmax : integer);
  var
    tempmin, tempmax : real;
    pomin, pomax : integer;
  begin
     pomin := 1;
     pomax := 0;
     tempmin := pre[1];
     tempmax := pre[1];
     for t := 1 to tamacoleccion do
     begin
        if tempmin > pre[t] then
        begin
        tempmin := pre[t];
        pomin := t;
        end;
        if tempmax < pre[t] then
        begin
        tempmax := pre[t];
        pomax := t;
        end;
     end;
       min := tempmin;
       max := tempmax;
       posmin := pomin;
       posmax := pomax;
  end;
 
  procedure precioindicadoesacto(pre : coleccion);
  var
     prec : real;
     pos : integer;
     preci : boolean;
  begin
      preci := false;
      if datos = true then
      begin
      writeln('   Entre El Precio Que Desea  ');
      writeln;
      write('  Precio : ');
      readln(prec);
      for t := 1 to tamacoleccion do
      if pre[t] = prec then
      begin
          preci := true;
          pos := t;
         writeln('  Producto De Precio : ',prec:0:2,' En Posicion : ',pos);
      end;
       writeln;
       if preci = true then
       begin
           writeln('Productos Con Ese Precio');
          writeln('  Pulse [Enter]');
       end
     else
        begin
           writeln('  Ningun Producto De Ese Precio Pulse [Enter]');
        end;
    end;
  end;
 
(*-- Programa Principal -- *)
Begin
    datos := false;
    leertabla(precios);
    writeln;
    imprimetabla(precios);
    writeln(sumacoleccion(precios):8:2);
    minimomaximo(precios, min, max, posmin, posmax);
    writeln;
    writeln('  Laposicion Es : ',posmin,'  El Precio Minimo Es : ',min:0:2);
    writeln('  Laposicion Es : ',posmax,'  El Precio Maximo Es : ',max:0:2);
    precioindicadoesacto(precios);
    readln;
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 en pascal

Publicado por Victor (4 intervenciones) el 21/03/2013 14:56:36
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
Program Galeria;
 (*-- Constantes globales al programa -- *)
Const
	tamacoleccion = 4;
(*-- Tipos globales al programa -- *)
Type
	coleccion = array[1..tamacoleccion] of real;
   (*-- Variables del módulo principal -- *)
 Var
	precios : Coleccion;
	t : integer;
	datos : boolean;
(*-- Funciones y procedimientos -- *)
  procedure leertabla(var precios : coleccion);
  var
	pre : coleccion;
  begin
		for t := 1 to tamacoleccion do
begin
	write('   Cuadro .',t,' : ');
	readln(pre[t]);
     end;
	precios := pre;
	datos := true;
   end;
  procedure imprimetabla(pre : Coleccion);
  begin
     if datos = true then
     begin
		for t := 1 to tamacoleccion do
		writeln('Precio cuadro . : ',t,'   Precio : ',pre[t]:8:2);
		writeln;
		writeln('**** Pulse Enter ****');
		readln;
     end
   else
       begin
		writeln('.... La Tabla Esta Vacia Pulse Enter ....');
		readln;
       end;
  end;
(*-- Programa Principal -- *)
Begin
    datos := false;
    leertabla(precios);
    writeln;
    imprimetabla(precios);
End.



2. SEGUNDA CUESTIÓN

Partiendo del programa de la cuestión anterior, sin modificar los procedimientos y funciones ya codificados, añada una función de nombre suma_coleccion que recorra la tabla y devuelva como resultado de la función, el valor total de la colección de cuadros.

Modifique a continuación el programa principal para que después de leer e imprimir la tabla, calcule la suma de la colección utilizando esta función, y la imprima por pantalla. Nuestro módulo principal debería tener la estructura:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(*-- Variables  -- *)
Var
precios : Coleccion;
suma: real;
 
(*-- Programa Principal -- *)
Begin
lee_tabla(precios, TAMCOLECCION);
imprime_tabla(precios, TAMCOLECCION);
 
(* Aquí iría la llamada a la función suma_coleccion *)
 
(* Presentación de resultados *)
writeln('> Valor coleccion: ', suma:0:2);
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