Pascal/Turbo Pascal - Ejercicio Banco

 
Vista:
sin imagen de perfil

Ejercicio Banco

Publicado por Lucas (3 intervenciones) el 10/01/2014 11:11:39
Buenos dias, estoy trabajando en un ejercicio que tengo pendiente, sin embargo no encuentro manera de hacerlo bien, a ver si podeis resolvermelo, os escribo el enunciado a continuacion.
Muchas gracias.

Ejercicio 1
El banco BFI ha almacenado en un fichero de texto, llamado “ingresosBFI.txt”, todos los movimientos monetarios de sus clientes desde su fundación. Cada línea del fichero corresponde con la información de un único cliente. Más concretamente, cada línea consta de: un primer entero que determina el número de movimientos realizados por el cliente, una secuencia de enteros formada por el importe de cada movimiento (los enteros positivos representan ingresos y los negativos retiradas de dinero); y, finalmente, el nombre del cliente. Por ejemplo, la siguiente línea representa que Luis Alberto Pérez Martín ha realizado 4 movimientos siendo su saldo final de 4250 euros.
4 3500 1250 -3000 2500 Luis Alberto Pérez Martín
Se asume que el fichero está libre de errores, que contiene como máximo 1000 clientes, y que el saldo de una cuenta puede ser negativo.
Se pide:
1) Diseñar la estructura de datos tpCuenta que almacene el par, saldo de la cuenta y nombre del cliente.
2) Diseñar la estructura de datos tpVectorCuentas, un vector que permite almacenar todas las cuentas que aparecen en el fichero de texto.
3) Desarrollar el procedimiento obtenerCuentasCorrientes que lee el fichero de texto y almacena en un vector tpVectorCuentas las cuentas que aparecen en el fichero de texto.
procedure obtenerCuentasCorrientes (??? f: text; ??? v: tpVectorCuentas);
{ PRE: f es un fichero de texto asociado
POST: v contiene todas las cuentas corrientes del fichero f. Cada componente de v es un par (titular cuenta corriente, saldo cuenta corriente)}
Ejercicio 2
La crisis económica actual ha provocado que el banco BFI del ejercicio anterior se haya fusionado con el banco BGT. Utilizado el procedimiento implementado en el apartado anterior, cada banco ha almacenado en una estructura de tipo tpVectorCuentas la información de sus respectivos clientes. Dado que BFI y BGT se han fusionado, les interesa tener la información de los dos bancos en una única estructura de tipo tpVectorCuentas que contenga los clientes de ambos bancos. Por simplicidad, un cliente no puede tener una cuenta en ambos bancos. Además, las cuentas corrientes contenidas en cada estructura están ordenadas de menor a mayor según el saldo. Por tanto, el procedimiento mezclarCuentasCorrientes debe obtener un vector de tipo tpVectorCuentas que contenga las cuentas de BFI y BGT también ordenadas de menor a mayor según el saldo.
Se pide:
Prácticas de Informática. Grado en Ingeniería Eléctrica
Departamento de Informática e Ingeniería de Sistemas 2
4) Desarrollar el procedimiento mezclarCuentasCorrientes y el programa bancario.pas en PASCAL que dados dos vectores tpVectorCuentas uno de BFI y otro de BGT, obtenga un tpVectorCuentas. Se asume que como máximo cada banco tendrá 1000 clientes.
5) El esquema de bancario.pas que debéis seguir es este:
Program bancario;
Const MAXCLIENTES = 1000???;
Type tpCuenta = ???;
tpVectorCuentas = ???;
Var …
procedure obtenerCuentasCorrientes (??? f: text; ??? v: tpVectorCuentas);
{ PRE: f es un fichero de texto asociado
POST: v contiene todas las cuentas corrientes del fichero f. Cada componente de v es un par (titular cuenta corriente, saldo cuenta corriente)}
procedure mezclarCuentasCorrientes (??? v1, v2: tpVectorCuentas; ??? v3: tpVectorCuentas);
{ PRE: v1 y v2 contienen cuentas corrientes (hasta 1000 cada uno de ellos) de manera que el sado de cada cuenta está ordenado de manera no decreciente}
POST: v3 contiene todas las cuentas corrientes de v1 y v2, ordenadas de forma no decreciente}
Begin
assign(fCuentasBFI, ‘ingresosBFI.txt’);
assign(fCuentasBGT, ‘ingresosBGT.txt’);

close(fCuentasBFI);
close(fCuentasBGT);
End;
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

Ejercicio Banco

Publicado por ramon (2158 intervenciones) el 12/01/2014 13:29:53
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
{Mira esta estructura no permite tener un vector de 1000 clientes puesto que pascal te lanzara un error mira si es
esto sino pon me tu la estructura que quieres }
 
program bancario;
   uses
     crt;
   const
      maxclientes = 1000;
   type
      tpcuenta = record
          cliente : string;
          movimiento : integer;
          ingresos   : real;
          estracion  : real;
          saldo      : real;
        end;
 
    var
      tpvectorcuentas : array[1..maxclientes] of tpcuenta;
      cont : integer;
      f : text;
 
 
    procedure guardacuenta(tcuen : tpcuenta);
    begin
       assign(f,'ingresosBFI.txt');
     {$I-} reset(f); {$I+}
     if ioresult <> 0 then
     begin
      rewrite(f);
      write(tcuen.cliente,' ',tcuen.movimiento,' ',tcuen.ingresos:0:2,
      ' ',tcuen.estracion:0:2,' ',tcuen.saldo:0:2);
        close(f);
     end
  else
      begin
       close(f);
       append(f);
       write(tcuen.cliente,' ',tcuen.movimiento,' ',tcuen.ingresos:0:2,
      ' ',tcuen.estracion:0:2,' ',tcuen.saldo:0:2);
         close(f);
      end;
    end;
 
   procedure entradadatosclientes(clien : tpcuenta);
   var
     t : integer;
     compa : tpcuenta;
     exist : boolean;
   begin
      exist := false;
      clrscr;
      writeln('**** Entrada Datos Clientes ****');
      writeln;
      write('  Entre Nombre y Apellidos : ');
      readln(clien.cliente);
      write('  Entre Ingreso            : ');
      readln(clien.ingresos);
      clien.movimiento := 1;
      clien.estracion := 0.0;
      clien.saldo := clien.ingresos;
      assign(f,'ingresosBFI.txt');
     {$I-} reset(f); {$I+}
     if ioresult <> 0 then
     begin
     end
   else
     begin
      while not eof(f) do
      begin
         read(f,compa.cliente);
         if compa.cliente = clien.cliente then
         exist := true;
      end;
     close(f);
    end;
      if exist = true then
      begin
 
      end
    else
      begin
      guardacuenta(clien);
      end;
   end;
 
  begin
     cont := 1;
     entradadatosclientes(tpvectorcuentas[cont]);
     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