Pascal/Turbo Pascal - Como crear un reporte utilizando procedimientos

 
Vista:

Como crear un reporte utilizando procedimientos

Publicado por Luis (3 intervenciones) el 23/04/2015 01:21:23
Ayuda con este ejercicio

Elaborar un programa en pascal que utilice procediminetos (usando parametros formales) y funciones para elaborar el siguiente reporte

seccion de programación

Apellido(s) y Nombre(s):
Cédula:
Exp:
Nota:

Para ello debe de crear 4 arreglos unidimensionales, trabajarlos en forma paralela cargar los datos que aparecen en el reporte y efectuar las siguentes consultas:

1) Buscar un alumno de esta base y determinar si esta o no en la misma con mensaje.
2) Presentar un reporte ordenado por apellidos y nombres e imprimir la misma.
3) Calcular el promedio e indicar cuantos de los estudiantes estan por encima del promedio y cuantos no.
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
sin imagen de perfil

Como crear un reporte utilizando procedimientos

Publicado por David (224 intervenciones) el 23/04/2015 18:41:18
Te propongo la siguiente solución:

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
Uses CRT;
 
Const
  TAMANIO = 3;
 
Type
  TipoArray = Array [1..tamanio] of string;
  TipoNota  = Array [1..tamanio] of real;
 
var
  APENOM : TipoArray;
  CEDULA : TipoArray;
  EXPED  : Tipoarray;
  NOTA   : TipoNota;
  c:string;
  i:integer;
  sisupera,nosupera:integer;
 
Procedure leerdatos(var ap:tipoarray; var ced:tipoArray; var exped: tipoArray; var nota:tiponota);
 
var
  i : integer;
 
begin
   For i :=1 to tamanio do
     begin
 
       Clrscr;
       gotoxy(10,10); Writeln('NOMBRE Y APELLIDOS:');
       gotoxy(30,10);  Readln(ap[i]);
       gotoxy(10,12); Writeln('CEDULA: ');
       gotoxy(19,12);  readln(ced[i]);
       gotoxy(10,14); Writeln('EXPEDIENTE: ');
       gotoxy(22,14); readln(EXPED[I]);
       gotoxy(10,16); writeln('Nota: ');
       gotoxy(16,16); readln(nota[i]);
     end;
 
end;
 
Procedure reporte(var ap : tipoarray; var ced: tipoArray; var exped:tipoArray; var nota:tiponota);
var
 i : integer;
 
begin
  Clrscr;
  Gotoxy(25,1);
  Writeln('INFORME DE NOTAS');
  For i :=1 to tamanio do
    begin
      gotoxy(1,i+2); Writeln(ap[i],'______',CED[i],'______',EXPED[I],'______',NOTA[I]:2:2);
    end;
 
end;
 
Function Promedio (var nota : Tiponota):real;
var
  i : integer;
  suma:real;
 
begin
  suma:=0;
  for i:=1 to tamanio do
    begin
      suma:=suma+nota[i]
    end;
    promedio:=suma / tamanio
 
end;
 
Function Buscar(var CED:TIPOarray; cedu : string):BOOLEAN;
 
var
  i   : integer;
 
begin
  For i:= 1 to tamanio do
    begin
      if (cedu=ced[i]) then
        begin
          buscar:=true;
          break;
        end;
    end;
 
 
end;
 
Procedure DatosMedia (var nota:tiponota; var supera:integer; var nosupera:integer);
 
var
  i : integer;
  aux:real;
 
begin
  aux:=promedio(nota);
  for i:=1 to tamanio do
    begin
      if nota[i]>aux then
        inc(supera)
      else
        inc(nosupera);
    end;
 
end;
Procedure ordenar(var ap:tipoarray; var ced:tipoArray; var exped: tipoArray; var nota:tiponota);
var
  i , j: integer;
  auxnom,auxced,auxexp:string;
  auxnota:real;
 
begin
  for i:=1 to tamanio do
    for j:=0 to tamanio-1 do
      begin
        if ap[i]<ap[j] then
          begin
            auxnom:=ap[i];
            ap[i]:=ap[j];
            ap[j]:=auxnom;
            {aqu¡ ordenamos por apellido, pero al ser 4 arrays paralelos hemos de ordenar tambi‚n el resto}
            auxced:=ced[i];
            ced[i]:=ced[j];
            ced[j]:=auxced;
            auxexp:=exped[i];
            exped[i]:=exped[j];
            exped[j]:=auxexp;
            auxnota:=nota[i];
            nota[i]:=nota[j];
            nota[j]:=auxnota;
          end;
 
      end;
 
end;
 
 
begin
  clrscr;
  sisupera:=0;
  nosupera:=0;
  leerdatos(apenom,cedula,exped,nota);
  reporte(apenom,cedula,exped,nota);
  Writeln('buscar por c‚dula');
  readln(c);
  if buscar(cedula,c) = true then
    writeln('Encontrado')
  else
    writeln('Alumno no econtrado');
  readln;
  ordenar(apenom,cedula,exped,nota);
  reporte(apenom,cedula,exped,nota);
  datosmedia(nota,sisupera,nosupera);
  writeln(Sisupera, ' alumnos superan la media');
  writeln(Nosupera,' alumnos NO superan la media');
  readln;
end.


Si tienes algún problema, no dudes en volver a escribir. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como crear un reporte utilizando procedimientos

Publicado por Luis (3 intervenciones) el 24/04/2015 03:18:38
Gracias David.
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