Pascal/Turbo Pascal - ayuda es urgente!! respondan

 
Vista:
sin imagen de perfil

ayuda es urgente!! respondan

Publicado por fernando (6 intervenciones) el 04/12/2013 23:44:12
Necesito hacer un programa en pascal así:
Un array de registros contiene la descripción de personas a efectos estadísticos. Cada registro tiene los campos:nombre, edad, sexo, altura, color de piel, color de ojos, nacionalidad y región. Escribir un programa que lea y almacene datos en este array, ordene el array por orden alfabético de nombres y visualice o imprima su contenido.
El programa es como el siguiente nadamas que ay que cambiar los datos y los procedimientos de manera que cumpla con las características ya mencionadas.
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
Program Datos;
Uses
  crt,DOS;
 
Type
  Personales = record
      NOM,AP,AM      : String[15];
      TEL1,TEL2,TEL3 : String[13];
      CP             : String[5];
      CALL,CNIA      : String[20];
      NDOM           : String[10];
      AN,MN,DN       : Integer;
  End;
  Lista = Array[1..100] of personales;
Var
  Alumno : Lista;
  i,u    : Integer;
  Op     : Char;
 
 
Procedure Edad(A,M,D:word);
Var
  E,GA,GM,GD,GN:word;
Begin
  getdate(GA,GM,GD,GN);
  E:=GA-A;
  if M=GM then
    if D>GD then
      E:=E-1;
  if M>GM then
    E:=E-1;
  write(E);
End;
 
Procedure Formato (A,M,D:integer);
var
  D1,M1: string[2];
  A1: string[4];
  Fecha: String [15];
begin
  Str(D,D1);
  Str(M,M1);
  Str(A,A1);
  Delete(A1,1,2);
  Fecha:=D1+'/'+M1+'/'+A1;
  Write(Fecha);
end;
 
Procedure Caratula;
Begin
  clrscr;
  gotoxy(5,4);   write('Nombre Propio');
  gotoxy(25,4);  write('Apellido Paterno');
  gotoxy(45,4);  write('Apellido Materno');
  gotoxy(5,5);   Write('______________________________________________________________________');
  gotoxy(5,6);   Write('DOMICILIO');
  gotoxy(5,9);   write('Calle');
  gotoxy(20,9);  write('Numero');
  gotoxy(40,9);  write('Colonia');
  gotoxy(60,9);  write('Codigo postal');
  gotoxy(5,10);  Write('______________________________________________________________________');
  gotoxy(5,11);  Write('TELEFONOS');
  gotoxy(5,14);  write('Numero de Casa');
  gotoxy(25,14); write('Numero de Oficina');
  gotoxy(45,14); write('Numero de Celular');
  gotoxy(5,15);  Write('______________________________________________________________________');
  gotoxy(5,16);  write('FECHA DE NACIMIENTO');
  gotoxy(5,19);  write('D¡a');
  gotoxy(15,19); write('Mes');
  gotoxy(25,19); write('A¤o');
  gotoxy(35,19); write('Fecha');
  gotoxy(55,19); write('A¤os Cumplidos');
  gotoxy(5,20);  Write('______________________________________________________________________');
End;
 
Procedure Captura(Var Alumno : Personales);
Begin
  With Alumno do
  Begin
    gotoxy(5,3);   readln(NOM);
    gotoxy(25,3);  readln(AP);
    gotoxy(45,3);  readln(AM);
    gotoxy(5,8);   readln(CALL);
    gotoxy(20,8);  readln(NDOM);
    gotoxy(40,8);  readln(CNIA);
    gotoxy(60,8);  readln(CP);
    gotoxy(5,13);  readln(TEL1);
    gotoxy(25,13); readln(TEL2);
    gotoxy(45,13); readln(TEL3);
    gotoxy(5,18);  readln(DN);
    gotoxy(15,18); readln(MN);
    gotoxy(25,18); readln(AN);
    gotoxy(35,18); Formato(AN,MN,DN);
    gotoxy(55,18); Edad(AN,MN,DN);
  End
End;
 
Procedure Mostrar(Alumno : Personales);
Begin
  gotoxy(5,3);   write(Alumno.NOM);
  gotoxy(25,3);  write(Alumno.AP);
  gotoxy(45,3);  Write(Alumno.AM);
  gotoxy(5,8);   write(Alumno.CALL);
  gotoxy(20,8);  write(Alumno.NDOM);
  gotoxy(40,8);  write(Alumno.CNIA);
  gotoxy(60,8);  write(Alumno.CP);
  gotoxy(5,13);  write(Alumno.TEL1);
  gotoxy(25,13); write(Alumno.TEL2);
  gotoxy(45,13); write(Alumno.TEL3);
  gotoxy(5,18);  write(Alumno.DN);
  gotoxy(15,18); write(Alumno.MN);
  gotoxy(25,18); write(Alumno.AN);
  gotoxy(35,18); Formato(Alumno.AN,Alumno.MN,Alumno.DN);
  gotoxy(55,18); Edad(Alumno.AN,Alumno.MN,Alumno.DN);
End;
 
Begin
  i:=0;
  u:=0;
  Caratula;
  Repeat
    Gotoxy (5,24); Write('[I]ngresar [E]liminar [S]iguiente [A]nterior [M]odificar [X]Salir =>');
    Readln(Op);
    Case Op of
      'I','i' : Begin
                  i:=i+1;
                  u:=i;
                  Caratula;
                  Captura(Alumno[i]);
                End;
      'E','e' : Begin
                  if u>0 then
                  Begin
                    While u<i do
                    Begin
                      Alumno[u]:=Alumno[u+1];
                      u:=u+1;
                    End;
                    i:=i-1;
                    u:=i;
                    Caratula;
                    if u>0 then
                      Mostrar(Alumno[u]);
                  End;
                End;
      'S','s' : Begin
                  if u>0 then
                  Begin
                    u:=u+1;
                    if u>=i then
                      u:=i;
                    Caratula;
                    Mostrar(Alumno[u]);
                  End
                  Else
                    Caratula;
                End;
      'A','a' : Begin
                  if u>0 then
                  Begin
                    u:=u-1;
                    if u<=1 then
                      u:=1;
                    Caratula;
                    Mostrar(Alumno[u]);
                  End
                  Else
                    Caratula;
                End;
      'M','m' : Begin
                if u>0 then
                  Captura(Alumno[u]);
                End;
 
    End;
  Until Upcase(Op)='X';
End.

Ayuden porfa ay que poner el programa igual pero de manera que cumpla con las primeras caracteristicas que dije empezando. Un procedimiento puede ser el procedimiento burbuja.
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 es urgente!! respondan

Publicado por ramon (2158 intervenciones) el 05/12/2013 01:11:09
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
{A ver si sirve con esto}
 
Program Datos;
Uses
crt,DOS;
 
Type
    Personales = record
             nombre : string[15];
               edad : integer;
               sexo : char;
             altura : real;
          colorpiel : string[15];
          colorojos : string[15];
       nacionalidad : string[50];
             region : string[50];
           end;
     {NOM, AP, AM : String[15];
     TEL1, TEL2, TEL3 : String[13];
       CP : String[5];
      CALL, CNIA : String[20];
      NDOM : String[10];
      AN, MN, DN : Integer;}
 
     Lista = Array[1..100] of personales;
 
 
   Var
     alumno : lista;
     i,u : Integer;
     Op : Char;
 
     Procedure Caratula;
     Begin
        clrscr;
        gotoxy(5,4); write('Nombre Propio');
        gotoxy(25,4); write('Edad');
        gotoxy(45,4); write('Sexo');
        gotoxy(55,4); Write('Altura');
        gotoxy(5,5); Write('______________________________________________________________________');
        gotoxy(5,9); write('Color Piel');
        gotoxy(20,9); write('Color Ojos');
        gotoxy(40,9); write('Nacionalidad');
        gotoxy(60,9); write('Rejion');
        gotoxy(5,10); Write('______________________________________________________________________');
     End;
 
  Procedure Captura(Var Alumno : Personales);
  Begin
      With Alumno do
      Begin
         gotoxy(5,3); readln(nombre);
         gotoxy(25,3); readln(edad);
         gotoxy(45,3); readln(sexo);
         gotoxy(55,3); readln(altura);
         gotoxy(5,8); readln(colorpiel);
         gotoxy(20,8); readln(colorojos);
         gotoxy(40,8); readln(nacionalidad);
         gotoxy(60,8); readln(region);
       End
    End;
 
   Procedure Mostrar(Alumno : Personales);
   Begin
      gotoxy(5,3); write(Alumno.nombre);
      gotoxy(25,3); write(Alumno.edad);
      gotoxy(45,3); Write(Alumno.sexo);
      gotoxy(5,8); write(Alumno.altura);
      gotoxy(20,8); write(Alumno.colorpiel);
      gotoxy(40,8); write(Alumno.colorojos);
      gotoxy(60,8); write(Alumno.nacionalidad);
      gotoxy(5,13); write(Alumno.region);
    End;
 
   procedure ordenacion;
   var
     tempo : Personales;
     c, h : integer;
   begin
      for c := 1 to i do
        for h := i downto c + 1 do
        if alumno[c].nombre > alumno[h].nombre then
        begin
           tempo := alumno[c];
           alumno[c] := alumno[h];
           alumno[h] := tempo;
        end;
   end;
 
Begin
i:=0;
u:=0;
Caratula;
Repeat
Gotoxy (5,24); Write('[I]ngresar [E]liminar [O]rdena [A]nterior [M]odificar [X]Salir =>');
Readln(Op);
Case Op of
'I','i' : Begin
i:=i+1;
u:=i;
Caratula;
Captura(Alumno[i]);
End;
'E','e' : Begin
if u>0 then
Begin
While u<i do
Begin
Alumno[u]:=Alumno[u+1];
u:=u+1;
End;
i:=i-1;
u:=i;
Caratula;
if u>0 then
Mostrar(Alumno[u]);
End;
End;
'O','o' : Begin
 if i > 1 then
 ordenacion;
Caratula;
End;
'A','a' : Begin
if u>0 then
Begin
u:=u-1;
if u<=1 then
u:=1;
Caratula;
Mostrar(Alumno[u]);
End
Else
Caratula;
End;
'M','m' : Begin
if u>0 then
Captura(Alumno[u]);
End;
 
End;
Until Upcase(Op)='X';
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

ayuda es urgente!! respondan

Publicado por fernando (6 intervenciones) el 05/12/2013 22:38:19
Okey todo indica parecer que esta bien pero al poner la o de ordenar se borra todo o como debo ingresar los datos en la corrida para que se ordene al poner siguiente y que aparezca el nombre de la persona que sigue pero en orden alfabético.
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

ayuda es urgente!! respondan

Publicado por ramon (2158 intervenciones) el 06/12/2013 13:49:00
Mira esto tienes que ponerlo así te mostrara el primer alumno ordenado.
'O','o' : Begin
if i > 1 then
ordenacion;
Caratula;
Mostrar(Alumno[1]);
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

ayuda es urgente!! respondan

Publicado por fernando (6 intervenciones) el 06/12/2013 22:21:55
LISTO pero creo k tus coordenadas estan mal pork al ordenar alfabeticamente y ver los datos se corre un espacio fijate si lo puedes correjir porfa
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

ayuda es urgente!! respondan porfa

Publicado por fernando (6 intervenciones) el 08/12/2013 05:15:35
respond es para el lunes (:S)
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

ayuda es urgente!! respondan porfa

Publicado por ramon (2158 intervenciones) el 08/12/2013 17:50:02
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 es esto}
 
Program Datos;
Uses
crt,DOS;
 
Type
    Personales = record
             nombre : string[15];
               edad : integer;
               sexo : char;
             altura : real;
          colorpiel : string[15];
          colorojos : string[15];
       nacionalidad : string[50];
             region : string[50];
           end;
     {NOM, AP, AM : String[15];
     TEL1, TEL2, TEL3 : String[13];
       CP : String[5];
      CALL, CNIA : String[20];
      NDOM : String[10];
      AN, MN, DN : Integer;}
 
     Lista = Array[1..100] of personales;
 
 
   Var
     alumno : lista;
     i,u : Integer;
     Op : Char;
 
     Procedure Caratula;
     Begin
        clrscr;
        gotoxy(5,4); write('Nombre Propio');
        gotoxy(25,4); write('Edad');
        gotoxy(45,4); write('Sexo');
        gotoxy(65,4); Write('Altura');
        gotoxy(5,5); Write('______________________________________________________________________');
        gotoxy(5,9); write('Color Piel');
        gotoxy(20,9); write('Color Ojos');
        gotoxy(40,9); write('Nacionalidad');
        gotoxy(60,9); write('Rejion');
        gotoxy(5,10); Write('______________________________________________________________________');
     End;
 
  Procedure Captura(Var Alumno : Personales);
  Begin
      With Alumno do
      Begin
         gotoxy(5,3); readln(nombre);
         gotoxy(25,3); readln(edad);
         gotoxy(45,3); readln(sexo);
         gotoxy(65,3); readln(altura);
         gotoxy(5,8); readln(colorpiel);
         gotoxy(20,8); readln(colorojos);
         gotoxy(40,8); readln(nacionalidad);
         gotoxy(60,8); readln(region);
       End
    End;
 
   Procedure Mostrar(Alumno : Personales);
   Begin
      gotoxy(5,3); write(Alumno.nombre);
      gotoxy(25,3); write(Alumno.edad);
      gotoxy(45,3); Write(Alumno.sexo);
      gotoxy(65,3); write(Alumno.altura:0:2);
      gotoxy(5,8); write(Alumno.colorpiel);
      gotoxy(20,8); write(Alumno.colorojos);
      gotoxy(40,8); write(Alumno.nacionalidad);
      gotoxy(60,8); write(Alumno.region);
    End;
 
   procedure ordenacion;
   var
     tempo : Personales;
     c, h : integer;
   begin
      for c := 1 to i do
        for h := i downto c + 1 do
        if alumno[c].nombre > alumno[h].nombre then
        begin
           tempo := alumno[c];
           alumno[c] := alumno[h];
           alumno[h] := tempo;
        end;
   end;
 
Begin
i:=0;
u:=0;
Caratula;
Repeat
Gotoxy (5,24); Write('[I]ngresar [E]liminar [O]rdena [A]nterior [M]odificar [X]Salir =>');
Readln(Op);
Case Op of
'I','i' : Begin
i:=i+1;
u:=i;
Caratula;
Captura(Alumno[i]);
End;
'E','e' : Begin
if u>0 then
Begin
While u<i do
Begin
Alumno[u]:=Alumno[u+1];
u:=u+1;
End;
i:=i-1;
u:=i;
Caratula;
if u>0 then
Mostrar(Alumno[u]);
End;
End;
'O','o' : Begin
 if i > 1 then
  ordenacion;
  u := 1;
 repeat
  clrscr;
  Caratula;
  Mostrar(Alumno[u]);
  gotoxy(5,10);write('Pulse Tecla Espacio');
  readkey;
  u := u + 1;
 until u > i;
End;
'A','a' : Begin
if u>0 then
Begin
u:=u-1;
if u<=1 then
u:=1;
Caratula;
Mostrar(Alumno[u]);
End
Else
Caratula;
End;
'M','m' : Begin
if u>0 then
Captura(Alumno[u]);
End;
 
End;
Until Upcase(Op)='X';
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