Ejercicios Pascal

Iniciado por Corso, 3 Diciembre 2005, 17:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Corso

Buenas.

A continuación os voy a poner una serie de ejercicios en Pascal. Son de nivel básico. Irán clasificados por bloques, y mas o menos lo que se usa en cada bloque(está claro que por ejemplo, los ejercicios del bloque tres, implicarán cosas del bloque dos y uno a la fuerza).

No son de mi creación, y yo hasta la fecha, solamente e resuelto hasta el bloque 6, y alguno del bloque 7 (con ayuda de algún miembro de este foro, no lo nombro así directamente, que si no lo abrasáis fijo xD). Por circunstancias no puedo nombrar la fuente de los ejercicios.

Empezamos



BLOQUE 1.- PRIMER PROGRAMA EN PASCAL

En este bloque se pretende usar las sentencias básica de escritura (write) y de lecuta (read),  y codificar el "cuerpo" de un programa pascal  (begin-end..).

Ejercicio1:  

Partiendo de este código:


Program Bienvenido;
Var
   nombre: string[40];
Const
    HOLA='Bienvenido al mundo';
begin
      write('Introduzca su nombre: ');
      readln(nombre);
      writeln(HOLA,' ', nombre);
end.


Se solicitita que se le añada:

   - Sentencias para que, además del nombre solicite al usuario el aula dónde se ha matriculado, su dirección y que todo eso se presente por pantalla, llamando también a la constante HOLA.

El resultado tiene que ser similar a esto:

     
         Introduzca su nombre: pepe
   Introduzca su aula: 7
   Introduzca su dirección: C/Las peras

   Bienvenido alumno pepe
   Te conectas desde el aula numero: 7
   Tu dirección es: C/Las peras




BLOQUE 2.- TIPOS Y SENTENCIAS.

En este bloque se manejan los tipos de datos que tiene pascal, así como alguna de las expresiones básicas (en este caso aritméticas).

Ejercicio1:

Codificar un programa que solicite al usuario dos valores numéricos y calcule el valor medio, que es la suma de ambos dividida por dos.

El resultado debe ser similar a esto:

   Introduce el primer valor numerico: 5
   Introduce el segundo valor numerico: 2
   La media de ambos numero es: 3,50

Ejercicio2:

Realizar un programa que calcule un valor de tipo numérico que nos indicará el peso relativo de una persona. El programa solicitará al usuario sus datos personales (nombre y edad), su altura y su peso (el peso relativo se calcula dividiendo el peso por el cuadrado de la altura.

El resultado debe ser similar a esto:

   Introduzca su nombre: pepe
   Introduzca su edad: 20
   Introduzca su altura en m: 1.70
   Introduzca su peso en Kg: 80

   Hola pepe
   Tu edad es 20, tu peso 80 y tu altura 1.70.
   Tu peso relativo es: 27.68.

Ejercicio 3:

Codificar un programa que solicite al usuario una cantidad en pesetas y calcule y presente por pantalla el equivalente en euros.

El resultado debe ser similar a esto:

         Introduzca una cantidad en pesetas: 2000
   Son 12.02 euros.




BLOQUE 3.- ESTRUCTURAS DE CONTROL

En este bloque es necesario usar las estructuras de control que disponemos en pascal (sentencias selectivas y bucles).

Ejercicio1:

Realizar un programa que utilizando una estructura repetitiva (bucle) presente por pantalla los números del 1 al 10 separados por un guión.

El resultado debe ser similar a esto:

   1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 -

Ejercicio2:

Modifique el programa previo para que solicite al usuario desde y hasta que número quiere presentar por pantalla.

El resultado debe ser similar a esto:

   Introduzca valor inicial: 6
   Introduzca valor final: 14
   6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 -

Ejercicio3:

Utilizando la estructura selectiva múltiple (case) realizar un programa que solicite al usuario una vocal, y presente por pantalla un mensaje indicando el orden de la vocal y la vocal pulsada. Si pulsamos a, deberá indicar que es la primera vocal, e la segunda, i la tercera, etc.

El resultado debe ser similar a esto:

         Introduzca una letra: e
   Ha pulsado la segunda vocal, e

Ejercico4:

Se propone, utilizando sentencias selectivas, modificar el ejercicio del 2 del BLOQUE2. Deberá, en función del valor del peso relativo, indicar si estamos en un peso adecuado, por encima o por debajo. Puede suponer que el peso relativo deberá estar entre dos valores que pueden definir como constantes, PESOMIN y PESOMAX, que serán inicialmente 20 y 26.

El resultado deber ser similar a:

         Introduzca su nombre: pepe
   Introduzca su edad: 19
   Introduzca su altura en m: 1.70
   Introduzca su peso en kg: 80
   Hola pepe.
   Tu edad es 19, tu peso 80 y tu altura 1.70.
   Tu peso relativo es: 27.68.
   Peso por encima de lo recomendado


-------------------------------------------------------------------

   (ejemplo de resultado con otro peso y otra altura)
   
   Introduzca su nombre: pepe
   Introduzca su edad: 19
   Introduzca su altura en m: 1.70
   Introduzca su peso en kg: 70
   Hola pepe.
   Tu edad es 19, tu peso 70 y tu altura 1.70.
   Tu peso relativo es: 24.22.
   Peso correcto.


-----------------------------------------------------------------
   (otro ejemplo con otro peso y otra altura)

   Introduzca su nombre: pepe
   Introduzca su edad: 19
   Introduzca su altura en m: 1.70
   Introduzca su peso en kg: 40
   Hola pepe.
   Tu edad es 19, tu peso 40 y tu altura 1.70.
   Tu peso relativo es: 13.84.
   Peso por debajo de lo recomendado.

Ejercicio5:

Se propone modificar el ejercicio anterior. El programa deberá solicitar al usuario si desea repetir todo el proceso de petición de datos y cálculo de resultados.

El resultado  debe ser similar a esto:

   Introduzca su nombre: Arturo
   Introduzca su edad: 26
   Introduzca su peso en Kg.: 66
   Introduzca su altura en m: 1.70
   Hola Arturo
   Tu edad es 26, tu peso 66.00 y tu altura 1.70
   Tu peso relativo es 22.84
   Peso correcto.

Desea continuar (S/N): S



   Introduzca su nombre: Alice
   Introduzca su edad: 24
   Introduzca su peso en Kg.: 54
   Introduzca su altura en m: 1.6
   Hola Alice
   Tu edad es 24, tu peso 54.00 y tu altura 1.60
   Tu peso relativo es 21.09
   Peso correcto.

Desea continuar (S/N): n

Ejercicio6:

Suponga que desea saber que "perfil" tienen sus llamadas telefónicas. Para ello realizará un programa que solicite la duración de las llamadas y calcule:
   la duración total de sus llamadas
   el valor medio
   el número total de llamadas
   y los presente por pantalla.

El resultado  debe ser similar a esto:

   Duración de la llamada (0 para terminar): 5
   Duración de la llamada (0 para terminar): 10
   Duración de la llamada (0 para terminar): 15
   Duración de la llamada (0 para terminar): 20
   Duración de la llamada (0 para terminar): 0

   > Numero de llamadas:  4
   > Duración total:  50.0
   > Duración media:  12.5

Ejercicio7:

Añadir al programa anterior lo necesario para que clasifique las llamadas en Nacionales (N), Provinciales (P) y Locales (L) y realizar los mismo cálculos que antes para cada tipo de llamada (duración y numero de llamadas Nacionales, duración y numero de llamadas Provinciales y duración y numero de llamadas Locales). El programa también debe solicitar, después de presentar los resultados, si se desea realizar de nuevo todo el proceso anterior.

El resultado debe ser similar a esto:
   
   Introduzca la duración de la llamada en minutos (0 para terminar): 5
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

   Introduzca la duración de la llamada en minutos (0 para terminar): 15
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: n

   Introduzca la duración de la llamada en minutos (0 para terminar): 20
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: l

   Introduzca la duración de la llamada en minutos (0 para terminar): 40
   Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

   Introduzca la duración de la llamada en minutos (0 para terminar): 0



   -Especificación llamadas Nacionales, Provinciales y Locales-

   El numero de llamadas nacionales a sido: 1 y su duración: 15.00 minutos.
   El numero de llamadas provinciales a sido: 2 y su duración: 45.00 minutos.
   El numero de llamadas locales a sido: 1 y su duración: 20.00 minutos.

   -Totales-

   Numero de llamadas: 4
   Duración total: 80.00 minutos.
   Duración media: 20.00 minutos.

   Desea continuar para realizar otra lista de llamadas? S/N: n




BLOQUE 4.-  SUBPROGRAMAS (Procedimientos y Funciones)

En este bloque, para la resolución de los problemas se solicita el uso de procedimientos y funciones.

Ejercicio1:

Cree una función de nombre peso_relativo que calcule el peso relativo de una persona. Esta función recibirá como parámetros por valor el peso y la altura de la persona. Devolverá como resultado de la función el valor del peso relativo. Pude usar el programa del bloque2 ejercicio2   para definir y utilizar esta función.

El resultado debe ser similar a esto:

   Introduzca su nombre: Arturo
   Introduzca su edad: 26
   Introduzca su peso en Kg: 66
   Introduzca su altura en m: 1.70
   Hola Arturo
   Tu edad es 26, tu peso 66.00 y tu altura 1.70
   Tu peso relativo es 22.84

Ejercico2:

Codificar un conversor de pesetas a euros, y de euros a pesetas. Para ello se exige programar dos funciones que se llamarán Función calcula_euros y Función calcula_pesetas.

El resultado será similar a esto:

   Para convertir:
        1. Pasar de pesetas a euros.
        2. Pasar de euros a pesetas.

                   Opcion: 2

Introduzca cantidad en euros: 30
Son 4992 pesetas.

Ejercico3:

Codificar un programa, que solicite dos números y presente por pantalla la suma de ambos. El calculo de la suma deberá realizarse dentro de un procedimiento de nombre calculo, y los resultados se deberán presentar invocando a otro procedimientos de nombre presenta_resultados (este ultimo procedimiento no debe recibir como parámetros ni el primer, ni el segundo numero.)

El resultado será similar a esto:

   Introduzca el primer numero:
   3
   Introduzca el segundo numero:
   6
   El resultado de la suma es: 9.00

Ejercicio4:

A partir del programa anterior cree otro,  que presente además del resultado de la suma también el de la resta, multiplicación y división. Deberá modificar los procedimientos calculo y presenta_resultados como sea necesario, pero sin introducir ningún procedimiento ni función adicional. Recuerde que la impresión de los resultados hay que hacerla en el procedimiento presenta_resultados, y que este no debe recibir como parámetros ni el primer numero, ni el segundo numero)

El resultado debe ser similar a esto:

   Introduzca el primer numero:
   6
   Introduzca el segundo numero:
   3
   El resultado de la suma es: 9.00
   El resultado de la resta es: 3.00
   El resultado de la multiplicacion es: 18.00
   El resultado de la division es: 2.00

Ejercicio5:

Cree un programa con un procedimiento que imprima una línea de una cierta longitud compuesta por un determinado carácter.

Para ello el procedimiento, de nombre línea, recibirá dos parámetros: el carácter a imprimir y la longitud.

El resultado debe ser similar a esto:

   Introduzca longitud de la línea: 20
   Introduzca carácter: *

   ********************

Ejercicio6:

Crear un programa que imprima un triángulo.

El resultado debe ser similar a esto:

   Introduzca altura del triangulo: 7
   Introduzca letra: +

   +
   ++
   +++
   ++++
   +++++
   ++++++
   +++++++



   
BLOQUE 5.-TABLAS (o arrays)

Uso de tablas, arrays o matrices.

Ejercicio1:

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 colección 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.

Además se deberá codificar en este primer ejercicio:

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.
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.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 1200
   Cuadro 2: 2400
   Cuadro 3: 500
   Cuadro 4: 850
   > Precio cuadro 1: 1200.00
   > Precio cuadro 2: 2400.00
   > Precio cuadro 3: 500.00
   > Precio cuadro 4: 850.00

Ejercicio2:

Partiendo del programa anterior, 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.

El resultado debe ser similar a esto:

   Introduzca 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

Ejercicio3:

Ahora se propone al alumno que realice un procedimiento de nombre busca_minimo que busque dentro de una colección de cuadros el cuadro más barato, e imprima por pantalla el número de ese cuadro y su precio. Este procedimiento, como los previos, recibe la tabla de precios y el número de cuadros.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 100
   Cuadro 2: 200
   Cuadro 3: 300
   Cuadro 4: 85
   > Precio cuadro 1: 100.00
   > Precio cuadro 2: 200.00
   > Precio cuadro 3: 300.00
   > Precio cuadro 4: 85.00
   > Valor coleccion: 685.00
   > El precio del cuadro 4 es el minimo y cuesta 85.00

Ejercicio4:

Introduzca al ejercicio anterior un procedimiento de nombre limites que devolverá como parámetros por referencia el máximo y el mínimo de la colección.

El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 400
   Cuadro 2: 275
   Cuadro 3: 225
   Cuadro 4: 350
   > Precio cuadro 1: 400.00
   > Precio cuadro 2: 275.00
   > Precio cuadro 3: 225.00
   > Precio cuadro 4: 350.00
   El maximo es 400.0 y el minimo 225.0

Ejercicio5:

Deberá codificar un procedimiento de nombre busca_precio para un cliente que desea gastar una cantidad exacta . Este procedimiento recibe como parámetro la cantidad a buscar en la tabla. 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 se deberá incluir 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.

El resultado debe ser similar a esto:

   Cuadro 1: 150
   Cuadro 2: 200
   Cuadro 3: 150
   Cuadro 4: 400
   > Precio cuadro 1: 150.00
   > Precio cuadro 2: 200.00
   > Precio cuadro 3: 150.00
   > Precio cuadro 4: 400.00
   El maximo es 400.0 y el minimo 150.0
   Introduzca el precio a buscar en la tabla (cero para terminar): 200
   > Encontrado precio 200.0 en cuadro 2
   Introduzca el precio a buscar en la tabla (cero para terminar): 100
   > Precio 100.0 no encontrado.
   Introduzca el precio a buscar en la tabla (cero para terminar): 150
   > Encontrado precio 150.0 en cuadro 1
   > Encontrado precio 150.0 en cuadro 3
   Introduzca el precio a buscar en la tabla (cero para terminar): 0
   > Precio 0.0 no encontrado.

Ejercicio6:

Modificar el ejercicio 4 para que el procedimiento límites 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 resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 350
   Cuadro 2: 175
   Cuadro 3: 650
   Cuadro 4: 400
   > Precio cuadro 1: 350.00
   > Precio cuadro 2: 175.00
   > Precio cuadro 3: 650.00
   > Precio cuadro 4: 400.00
   El maximo es 650.0 en la posicion 3
   El minimo es 175.0 en la posicion 2

Ejercicio7:

Codificar ahora un programa que gestione 2 colecciones de cuadros. Usando las funciones y procedimientos de los ejercicios previos deberá:
   Solicitar los datos de las dos colecciones.
   Presentar un mensaje por pantalla indicando que colección vale más dinero.
   Buscar un cuadro de un precio determinado en las dos colecciones.
No se podrá codificar funciones ni procedimientos adicionales, y por lo tanto sólo se podrá modificar el programa principal y la sección de variables globales.

El resultado debe ser similar a esto:

   Coleccion 1:
   Introduzca los precios
   Cuadro 1: 100
   Cuadro 2: 200
   Cuadro 3: 300
   Cuadro 4: 400
   Coleccion 2:
   Introduzca los precios
   Cuadro 1: 300
   Cuadro 2: 500
   Cuadro 3: 600
   Cuadro 4: 1000
   Coleccion 2 vale mas que coleccion 1
   Introduzca el precio a buscar en las tablas (cero para terminar): 200
   Coleccion 1:
   > Encontrado precio 200.0 en cuadro 2
   Coleccion 2:
   > Precio 200.0 no encontrado.
   Introduzca el precio a buscar en las tablas (cero para terminar): 600
   Coleccion 1:
   > Precio 600.0 no encontrado.
   Coleccion 2:
   > Encontrado precio 600.0 en cuadro 3
   Introduzca el precio a buscar en las tablas (cero para terminar): 300
   Coleccion 1:
   > Encontrado precio 300.0 en cuadro 3
   Coleccion 2:
   > Encontrado precio 300.0 en cuadro 1
   Introduzca el precio a buscar en las tablas (cero para terminar): 50
   Coleccion 1:
   > Precio 50.0 no encontrado.
   Coleccion 2:
   > Precio 50.0 no encontrado.
   Introduzca el precio a buscar en las tablas (cero para terminar): 0
   Coleccion 1:
   > Precio 0.0 no encontrado.
   Coleccion 2:
   > Precio 0.0 no encontrado.
   
Ejercicio8:

Tendrá que completar el siguiente programa principal heredado de los ejercicios previos:


(*-- Programa Principal -- *)
Begin
  lee_tabla(precios1, TAMCOLECCION);
  writeln('La suma de los tres primeros es  ',                           );
  writeln('La suma desde el segundo hasta el ultimo es ',                          );
End.


Haciendo uso de las funciones previas, complete (y compruebe) esta expresión para que imprima el valor de la suma de los tres primeros cuadros de una colección:


writeln('La suma de los tres primeros es  ',                            );


Haciendo uso de las funciones previas, complete (y compruebe) esta expresión para que imprima el valor de la suma de los cuadros desde el segundo hasta el último:


writeln('La suma desde el segundo hasta el ultimo es ',                        );


El resultado debe ser similar a esto:

   Introduzca los precios
   Cuadro 1: 20
   Cuadro 2: 30
   Cuadro 3: 40
   Cuadro 4: 50
   La suma de los tres primeros es  90.0
   La suma desde el segundo hasta el ultimo es 120.0




BLOQUE 6.-REGISTROS

En este bloque se nos solicitará usar registros.

Ejercicio1:

Crear un programa que utilice un registro para almacenar la información de un cuadro. Será necesario:
Definir un tipo de datos Tcuadro, registro cuyos campos almacenen la información necesaria de un cuadro:
   Número del cuadro
   Título
   Autor
   Precio

Un procedimiento de nombre lee_cuadro que solicite al usuario que introduzca los datos de un cuadro, y los almacene en los campos de un registro que recibe el procedimiento como parámetro.

Un procedimiento de nombre imprime_cuadro que presente por pantalla los datos de un cuadro que recibe como parámetro. Tendrá la particularidad de que si el precio es cero significa que el cuadro no está en venta, y así deberá indicarse:

Deberá incluirlo todo en un programa que solicite los datos de dos cuadros y los imprima por pantalla (utilizando los procedimientos previos). Además deberá presentar por pantalla la suma de los precios de los dos cuadros

El resultado debe ser similar a esto:

   >Datos primer cuadro
    Numero: 1
    Titulo: Alambradas
    Autor: Raul Etam
    Precio: 0
   >Datos segundo cuadro
    Numero: 2
    Titulo: Tentativas
    Autor: Felicia Aller
    Precio: 1100
   >Datos de los cuadros
   1: Alambradas
     Autor: Raul Etam
     Precio: No en  venta
   ---
   2: Tentativas
     Autor: Felicia Aller
     Precio: 1100
   ---
   > La suma es: 1100.00

Ejercicio2:

Basándonos en el ejercicio anterior, este se mejora utilizando una tabla de registros para almacenar la información de una colección de cuadros.

Se deberá codificar:
Un tipo de datos de nombre Tcoleccion que representará una tabla de registros Tcuadro. El tamaño de la tabla se representará por una constante de nombre TAMCOLECCION, que inicialmente puede valer 3.
Un procedimiento de nombre lee_coleccion que, utilizando el procedimiento lee_cuadro, solicite al usuario que introduzca los datos de la colección de cuadros.
Un procedimiento de nombre imprime_coleccion que, utilizando el procedimiento imprime_cuadro presente por pantalla los datos de la colección de cuadros.

También se solicita añadir al programa anterior una función de nombre suma_coleccion. Esta función devuelve como resultado de la función el valor total de la colección. Pero como es posible que algunos cuadros no estén a la venta, esta función además devolverá como parámetro por referencia el número de cuadros que no están en venta.

El resultado debe ser similar a esto:

   >Datos primera coleccion
   Numero: 1
   Titulo: Primavera
   Autor: P. Freire
   Precio: 1200
   Numero: 2
   Titulo: Verano
   Autor: Jose Artes
   Precio: 2345
   Numero: 3
   Titulo: Invierno
   Autor: Alma Blanca
   Precio: 0
   >Datos de los cuadros
   1: Primavera
     Autor: P. Freire
     Precio: 1200
   ---
   2: Verano
     Autor: Jose Artes
     Precio: 2345
   ---
   3: Invierno
     Autor: Alma Blanca
     Precio: No en  venta
   ---
   > La suma es: 3545.00
   > Y hay 1  cuadro no en venta

Ejercicio3:

Crear un procedimiento busca_autor que recorra la tabla buscando los cuadros de un determinado autor. El nombre se solicita al usuario en el programa principal, y ese nombre lo recibe el procedimiento como parámetro.

Cada vez que encuentre una cuadro del autor deberá presentar en pantalla los datos del cuadro. Si no encuentra ningún cuadro de ese artista, deberá presentar un único mensaje indicando tal circunstancia.

La petición de autor a buscar y búsqueda se deberá incluir en un bucle que permita la repetición de la búsqueda.

El resultado debe ser similar a esto:

   Datos primera coleccion
    Numero: 1
    Titulo: Invierno
    Autor: Laimez
    Precio: 1200
    Numero: 2
    Titulo: Verano
    Autor: Lambier
    Precio: 2300
    Numero: 3
    Titulo: Primavera
    Autor: Lopez
    Precio: 10500
   Autor a buscar? (RC para terminar) Goya
   Autor  Goya no encontrado.
   Autor a buscar? (RC para terminar)Laimez
   1: Invierno
     Autor: Laimez
     Precio: 1200
   ---
   Autor a buscar? (RC para terminar)
   Autor  no encontrado.

Ejercicio4:

Añadir al programa anterior un procedimiento de nombre calcula_estadisticas. Este procedimiento deberá devolver como información (ya sea como resultado de la función o mediante parámetros):
   El valor total de la colección.
   El número de cuadros que no están a la venta.
   El valor del cuadro de mayor precio
   El valor del cuadro de menor precio (exceptuando los que no están a la venta, que "valen" cero).

El resultado debe ser  similar a esto:

   >Datos primera coleccion
    Numero: 1
    Titulo: La Luna
    Autor: Pelaez
    Precio: 3500
    Numero: 2
    Titulo: Fisgando
    Autor: Clara Lima
    Precio: 2500
    Numero: 3
    Titulo: Carcel
    Autor: Luis Sanz
    Precio: 500
   > La suma es: 6500.00
   > Y hay 0  cuadro no en venta
   > Maximo: 3500.  Minimo: 500

Ejercicio5:

Modificar el ejercicio anterior para:
Modificar la constante TAMCOLECCION para que valga 10
Utilizar dos colecciones de cuadros , coleccion1 y coleccion2.
En vez de tener tamaños fijos, se solicitará por pantalla al usuario que indique el tamaño de cada una de las colecciones: numcuadros1 y numcuadros2, que deberán ser distintos.
Utilice los procedimientos previos teniendo en cuenta esta circunstancia.



BLOQUE 7.- FICHEROS

Pues eso... Usar ficheros xD.

Ejercicio1:

Partiendo de los ejercicios del tema anterior,  los mejoraremos para poder guardar los datos en un fichero una vez que termine la ejecución del programa. Esto permitirá que en una ejecución posterior del programa podamos recuperar esos datos, y no tener que teclearlos de nuevo.

Para esta labor vamos a necesitar:

Definir un fichero binario, cuyo tipo base será el tipo de los registros que almacenan la información de un cuadro, Tcuadro.

Definir un procedimiento de nombre graba_fichero que reciba como parámetros:
   El nombre de un fichero
   La colección o tabla de cuadros
   El número de cuadros de la colección.
Este procedimiento deberá abrir el fichero para escritura, y mediante un bucle recorrer la tabla e ir "escribiendo" cada registro de la colección en el fichero.

Definir un procedimiento de nombre lee_fichero que reciba como parámetros:
   El nombre de un fichero
   La tabla de cuadros o colección
   El número de cuadros de la colección.
Este procedimiento abrirá el fichero para lectura, irá leyendo los datos del fichero registro a registro y los irá almacenando en la tabla colección.

Para probar estos procedimientos deberá crear un programa principal que presente al usuario dos opciones:

Leer del teclado: Se solicitará que se introduzcan los datos de la colección y posteriormente se guardarán eso datos en un fichero, cuyo nombre se solicitará al usuario.

Leer de un fichero: Se solicitará el nombre de un fichero (donde previamente se han guardado los datos de una colección) y presentar por pantalla los datos leídos del fichero.

El resultado debe ser similar a esto:

   Introducir por teclado (T) o leer de fichero(F)? T
   Numero de cuadros ? 2
   >Datos primera coleccion
    Numero: 1
    Titulo: Amanece
    Autor: Jose Luis
    Precio: 2000
    Numero: 2
    Titulo: Verano
    Autor: Marina
    Precio: 1250
   > Nombre Fichero donde guardar
   coleccion.dat

----------------------------------------------------

   (una vez que con la primera ejecución se a leído la colección por teclado y guardado  en un fichero, probamos a  leer desde fichero)

   Introducir por teclado (T) o leer de fichero(F)? F
   > Nombre Fichero donde leer
   coleccion.dat
   >Datos primera coleccion
   1: Amanece
     Autor: Jose Luis
     Precio: 2000
   ---
   2: Verano
     Autor: Marina
     Precio: 1250
   ---

Ejercicio2:

Contar el número de líneas y el número de caracteres de un fichero de texto.
Realizar un programa que abra un fichero de texto para lectura, y lo vaya leyendo línea a línea. Deberá presentar como resultado final el nombre del fichero, el número de líneas y el número de caracteres.

El resultado debe ser similar a esto:

   (usamos un fichero de prueba, prueba.txt)

   C:\cursopro>type prueba.txt
   Linea 1
   Linea 2
   Linea 3 y última

   -------------------------------
   
(ejecutamos el programa para ver si funciona)

   C:\cursopro>nombre_programa-ejercicio2
   Nombre Fichero origen: prueba.txt
   Fichero: prueba.txt 3 30

Ejercicio3:

Se propone realizar un programa que abra un fichero de texto, cree una copia del mismo y añada al final de la copia una cadena de caracteres.
El programa deberá:
   Solicitar el nombre del fichero de entrada, y abrirlo para lectura.

   Solicitar el nombre del fichero destino, comprobar que es distinto del nombre del fichero de entrada, y    si es así abrirlo para escritura.

   Leer línea a línea el fichero de entrada: En cada iteración del bucle leerá una línea del fichero de    entrada y escribirá esa misma línea en el fichero destino.

   Una vez alcanzado el final del fichero origen, se cerrará el mismo y a continuación se añadirá una línea    adicional al fichero destino. Tras añadir esta línea se cerrará también el fichero destino.

Para probar el programa se a  usado el fichero de texto prueba.txt.

El resultado debe ser similar a esto:

   C:\cursopro>nombre_programa-ejercicio2
   Nombre Fichero origen: prueba.txt
   Nombre Fichero destino: copia.txt
   Linea adicional: Esta es la nueva línea

-----------------------------------------------------

   (ejecutamos copia.txt para comprobar si funciona)

   C:\cursopro>type copia.txt
   Linea 1
   Linea 2
   Linea 3 y última
   Esta es la nueva línea




Fin de ejercicios.

Pues nada más... Estos son los ejercicios, quiero recalcar que no son míos, pero por circunstancias no puedo nombrar la fuente... También reiterar que yo solo e resuelto hasta el bloque6 y alguno del bloque7.

Si no consiguen sacar la solución de alguno... Pues ya saben, pregunten en este mismo subforo sus dudas.
Espero que les valgan para algo.

Salu2.
Cualquier ciudad es un secreto. Toda palabra traza un laberinto. De cualquier laberinto se sale con palabras.



skapunky

Hola corso!!! no se si me recuerdas.. Pero me pasava por aki haber si tenias dudas jejeje. Permiteme escribir en preudocodigo el primer ejercicio... eske me hace ilusion.. Se que poca gente se debe dedicar a pascal o almenos por estos foros no se demuestar mucho ya que casi no aparece este lenguaje.Haber si consegimos que mas gente se decante por este lenguaje.

Iniciar programa
declarar variables
Escribir -> introducir 1 varable
leer la variable
Escribir -> introducir 2 variable
leer segunda variable
Hacer la media  [( variable 1 + variable 2) /2]
Escribir -> El valor de la media
Finalizar programa.


atte. Srg.Skapunky

www.ciberia.ya.com/skapunky
Killtrojan Syslog v1.44: ENTRAR

Kpax

Felicitaciones por tu inicitiva sigue asi!!!
saludos
En este mundo una de dos