Pascal/Turbo Pascal - Ejercicio Variables locales + Menu Ayuda!

 
Vista:

Ejercicio Variables locales + Menu Ayuda!

Publicado por Fernando (5 intervenciones) el 02/03/2015 18:32:39
Buenas, tengo un ejercicio bastante largo y cada dos linias que meto siempre me acaba dando probemas al compilar, aver si alguien sabria solucionarlo. Porque yo soy incapaz de entenderlo.

Const
borra=#8;
blanco=#32;
intro=#13;
letra='TRWAGMYFPDXBNJZSQVHLCKE';
Type

nom=string [30];
nif=string [10];
nmat=string [6];

var
arrmat : array [1..100] of nmat;
i: integer;

Realiza un Ejercicio que todas las Variables que uses sean locales excepto arrmat ( Array ) , i (Índice del Array).

El menú tendrá las Opciones de Entrada, Listado, Listado Array y Salir.

Entrada :
Entraremos Nombre , Apellido totalmente controlados por el Procedimiento connom
Entraremos DNI controlado por el Procedimiento connu
Del DNI calculamos su Nif usando una Función.
Entraremos el Número de Matrícula controlada por el Procedimiento connu (Max 4 valores).
Si el Número de matrícula no ha sido Repetido se Guarda en el Array arrmat, si es Repetido
Visualizar Repetido Número de matrícula.

Listado :
Tendremos dos Listado, el de Datos Entrados que sólo listaremos el Nombre, Apellido, Nif y NMatr
Introducidos, al ser cadenas sólo guardaremos el Entrado último.

Listado del Array, visualizaremos los Nº de Matrícula dados y no Repetidos.
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 Variables locales + Menu Ayuda!

Publicado por ramon (2158 intervenciones) el 02/03/2015 22:08:11
Mira observo varias irregularidades que son:

nom=string [30];
nif=string [10];
nmat=string [6];

Esto no tendría que ser asi.

alumno = record
nom=string [30];
nif=string [10];
nmat=string [6];
end;

var
arrmat : array [1..100] of alumno ;

para poder manejar los datos de todos sino sera un nombre y un nif para 100 números de matriculas.
Aclararme la duda.
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

Ejercicio Variables locales + Menu Ayuda!

Publicado por ramon (2158 intervenciones) el 03/03/2015 13:53:46
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
152
{Mira esto seria así}
 
program alumnos;
 uses
    crt;
 
 Const
       borra = #8;
      blanco = #32;
       intro = #13;
     letra = 'TRWAGMYFPDXBNJZSQVHLCKE';
 
 type
    alumno = record
       nom : string[30];
       nif : string[10];
       nmat : string[6];
     end;
 
   var
     arraat : array[1..100] of alumno;
     i : integer;
 
    function connom(cu : string;n : integer) : boolean;
    var
       m, h : integer;
       elda : string;
     begin
        connom := false;
        for h := 1 to i - 1 do
        begin
        if n = 1 then
        begin
           elda := copy(arraat[h].nif,1,length(arraat[h].nif));
           elda[0] := chr(length(arraat[h].nif));
        end;
        if n = 2 then
        begin
           elda := copy(arraat[h].nmat,1,length(arraat[h].nmat));
           elda[0] := chr(length(arraat[h].nmat));
        end;
     end;
       if elda = cu then
       connom := true;
    end;
 
    procedure entrada;
    var
       pasa1, pasa2 : boolean;
    begin
       pasa1 := false;
       pasa2 := false;
       clrscr;
       writeln('   **** Entrada De Datos ****');
       writeln('   __________________________');
       writeln;
       write('   Entre Nombre y Apellido Max 30 Caracteres : ');
       readln(arraat[i].nom);
       write('   Entre Num. Nif Max 10 Diguitos            : ');
       readln(arraat[i].nif);
       if connom(arraat[i].nif,1) = true then
       begin
       writeln('   El Num. Nif Ya Existe Pulse Una Tecla');
       readkey;
       exit;
       end
    else
       begin
          pasa1 := true;
       end;
       write('   Entre Num. Matricula Max 6 Diguitos       : ');
       readln(arraat[i].nmat);
       if connom(arraat[i].nmat,2) = true then
       begin
       writeln('   El Num. Matricula Ya Existe Pulse Una Tecla');
       readkey;
       exit;
       end
    else
       begin
          pasa2 := true;
       end;
       if (pasa1 = true) and (pasa2 = true) then
       i := i + 1;
    end;
 
   procedure presenta_datos;
   var
      k : integer;
    begin
       clrscr;
       for k := 1 to i - 1 do
       begin
       with arraat[k] do
       begin
       writeln('  ',nom,'      ',nif,'    ',nmat);
       end;
      end;
        writeln;
        writeln('  Pulse Una Tecla');
        readkey;
    end;
 
   procedure numero_matricula;
   var
     g : integer;
    begin
       clrscr;
       for g := 1 to i - 1 do
       begin
          with arraat[g] do
          begin
             writeln('   Matricula Num. : ',nmat);
          end;
       end;
         writeln;
         writeln('   Pulse Una Tecla');
         readkey;
    end;
 
  procedure menu;
  var
    salir : boolean;
    tecla : char;
   begin
      salir := false;
    repeat
        clrscr;
        writeln('      ******* Menu Jeneral *******');
        writeln('      ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ');
        writeln;
        writeln('   [E] = Entrada Datos');
        writeln('   [L] = Listas Datos');
        writeln('   [M] = Listas Num. Matriculas');
        writeln('   [S] = Salir');
        repeat
           tecla := upcase(readkey);
        until tecla in['E','L','M','S'];
        clrscr;
     case tecla of
  'E' : entrada;
  'L' : presenta_datos;
  'M' : numero_matricula;
  'S' : salir := true;
    end;
    until salir = true;
   end;
 
  begin
     i := 1;
     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

Ejercicio Variables locales + Menu Ayuda!

Publicado por Fernando (5 intervenciones) el 03/03/2015 23:15:23
Wow muchas gracias. Tengo una pequeña duda, en el texto que te he pasado. Habla sobre crear un procedure connu y en el codigo no lo tienes creado 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

Ejercicio Variables locales + Menu Ayuda!

Publicado por ramon (2158 intervenciones) el 03/03/2015 23:47:49
Lo tienes creado como función,
te devuelve true si nif o numero matricula se repite y no deja centrarlo,
Fíjate en esa función,
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