Pascal/Turbo Pascal - ayuda con un programa

 
Vista:
sin imagen de perfil

ayuda con un programa

Publicado por Sara (6 intervenciones) el 11/10/2013 05:03:46
hola ayuda con un programa en pascal.

cada empleado de una firma tiene asignado un numero de identificacion de tres digitos, con la siguiente propiedad:

digito de centenas = digito de decenas + digito de unidades

un archivo de texto contiene una lista de nombres de personas, junto sus numeros de identificacion. imprima un programa que imprima en nombre de cada persona, junto con un mensaje apropiado ( ya sea TODO ES CORRECTO o identificacion no valida) basandose en si el numero de identificacion cumple con la propiedad anterior. El cuerpo principal debera llamar a un procedimiento decide para procesar la informacion de cada persona.
Sugerencia: el digito de las decenas de un numero de 3 digitos puede obtenersetomando primero div 10 y luego mod 10.

gracias
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

ayuda con un programa

Publicado por ramon (2158 intervenciones) el 11/10/2013 21:04:50
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
{Mira a ver si esto te sirve}
 
program digitos;
 uses
    crt;
  type
     empleados = record
         nombre  : string[100];
         numiden : integer;
        end;
 
  const
     archnombre = 'Datosemp.dat';
 
  var
    emple : empleados;
    f : file of empleados;
    arch : longint;
    digi : string[2];
    err, n3, n1, n2 : integer;
 
  procedure guardadatos;
  begin
     assign(f,archnombre);
    {$I-} reset(f); {$I+}
    if ioresult <> 0 then
    begin
       rewrite(f);
       seek(f,0);
       write(f,emple);
       close(f);
    end
  else
     begin
        seek(f,filesize(f));
        write(f,emple);
        close(f);
     end;
  end;
 
  procedure entradasempleado;
  var
    digit : integer;
    nu4, nu1, nu2, nu3 : string[8];
    cent  : integer;
  begin
      clrscr;
      writeln('**** Entrada Datos Empleado ****');
      writeln;
      write('   Nombre : ');
      readln(emple.nombre);
      write('   Num ID 2 Digitos : ');
      readln(digit);
      str((digit div 10) mod 10,nu1);
      str((digit mod 10),nu2);
      cent := ((digit div 10) mod 10) + (digit mod 10);
      str(cent,nu3);
      nu4[1] := nu3[1];
      nu4[2] := nu1[1];
      nu4[3] := nu2[1];
      nu4[0] := chr(3);
      val(nu4,emple.numiden,err);
      guardadatos;
  end;
 
  procedure decide;
  var
    busc : longint;
    err, entro, cent, numr : integer;
    nu1, nu2, nu3, nu4 : string[8];
    sal : boolean;
  begin
      clrscr;
      write('   Num ID 2 Digitos : ');
      readln(numr);
      str((numr div 10) mod 10,nu1);
      str((numr mod 10),nu2);
      cent := ((numr div 10) mod 10) + (numr mod 10);
      str(cent,nu3);
      nu4[1] := nu3[1];
      nu4[2] := nu1[1];
      nu4[3] := nu2[1];
      nu4[0] := chr(3);
      val(nu4,entro,err);
      assign(f,archnombre);
    {$I-} reset(f); {$I+}
    if ioresult <> 0 then
    begin
       writeln('  Error Falta Archivo De Datos Pulse Una Tecla');
       readkey;
    end
   else
      begin
          busc := 0;
          sal := false;
          repeat
          seek(f,busc);
          read(f,emple);
          if emple.numiden = entro then
          begin
             sal := true;
          end;
          busc := busc + 1;
          until (busc > filesize(f) - 1) or (sal = true);
          if sal = true then
          begin
          writeln('  Nombre = ',emple.nombre);
          writeln('    TODO ES CORRECTO');
          end
        else
          writeln('identificacion no valida');
          close(f);
      end;
        readkey;
  end;
 
  procedure menu;
  var
     tecla : char;
     sal : boolean;
  begin
     sal := false;
   repeat
       clrscr;
       writeln('   ***** Memu Jeneral *****');
       writeln;
       writeln('   1 = Entrada Persona');
       writeln('   2 = Proceso Persona');
       writeln('   3 = Salir');
       writeln;
       writeln('   <<<<< Elija Opcion >>>>>');
    repeat
        tecla := readkey;
    until tecla in['1','2','3'];
    clrscr;
    case tecla of
  '1' : begin entradasempleado;  end;
  '2' : begin decide;  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