Pascal/Turbo Pascal - Ayuda con este programa

 
Vista:
Imágen de perfil de Jorge

Ayuda con este programa

Publicado por Jorge (11 intervenciones) el 10/08/2014 21:23:41
Buenas tardes
Necesito yuda con este programa ya que no como hacer algunas partes, es necesario hacerlo con procedimientos y matrices. va asi:
Es crear un programa para calcular calificaciones para 5 estudiantes.

-Debe desplegar un menú. del 1 al 5
-La opcion 1 el sistema debe solicitar 4 datos de 5 estudiantes y guardarlos en una matriz.(hay que agregar 2 mas despues)
-La opcion 2 el sistema debe solicitar primero el numero de carne y las 5 notas de cada estudiante. al solicitar cada nota este debe sacar un porcentaje (eje, nota de 50 * 0.20 = "10%") y guardarlas en otra matriz, por ultimo al sacar la promediofinal sumando el valor porcentual de cada nota de cada uno de los 5 estudiantes y si if Promediofinal>70
resultado:='Aprobado' de lo contrario resultado:='Reprobado. Esta notafinal, deberá ser almacenada en la última columna de la matriz que contiene los datosgenerales de , "Carne /Nombre /Cuatrimestre/ Curso /promediofinal/ Resultado"(aqui se agregan los 2 datos mas que son el promedio final y el resultado).
-La opcion 3 el sistema debe solicitar el numero de carne del estudiante y mediante este buscar el alumno y mostrar su informacion de esta manera por ejemplo:

Carné del Estudiante: 1
Nombre del Estudiante: Adrian
Cuatrimestre: II-14
Nombre del Curso: Pascal
Nota: 100
Resultado: Aprobado

Detalle de Notas:

Nota I Parcial: 100
Nota II Parcial: 100
Nota Examen Final: 100
Nota Tareas: 100
Nota Proyectos: 100

Valor Porcentual

% I Parcial : 20
% II Parcial: 20
% Examen Final: 30
% Tareas: 10
%Proyectos: 20

-La opcion 4 hará algo parecido y es mostrar todos los 5 datos de los 5 estudiantes "Carne /Nombre /Cuatrimestre/ Curso /promediofinal/ Resultado" de una manera ordenada.
-La opcion 5 cerrará el programa

Estoy atascado en la parte de sumar el proediofinal de los 5 estudiantes para guardarlo en una casilla en especifico y no se como mostrar por pantala la informacion del estudiante buscandolo solo por el numero de carne.
esto es lo que llevo para que se den una idea:

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 Tarea_progra(input, output);
uses crt;
 
var Alumnos:array[1..5,1..5] of string;
    Nota:array[1..5,1..6] of real;
    promedio:array[1..5,1..7] of real;
    PromedioFinal:real;
    resultado:string;
    opcion:byte;
Label Return;
 
procedure Infoestudiante;
var i:integer; Alumnos:array[1..5,1..5] of string; {Hay 1 hueco (Alumnos:[1,5]) para resultado(aprobado-reprobado),}
begin
   for i:=1 to 5 do
   begin
       Writeln('1.Ingrese numero de Carne del estudiante: ',i);
       readln(Alumnos[i][1]);
       Writeln('2.Ingrese nombre del estudiante: ');
       readln(Alumnos[i][2]);
       Writeln('3.cuatrimiestre del estudiante : ');
       readln(Alumnos[i][3]);
       Writeln('4.Nombre del curso del estudiante: ');
       readln(Alumnos[i][4]);
       writeln();
   end;
end;
 
 
procedure Notasestudiante;
var j:integer; Nota:array[1..5,1..6] of real;
               promedio:array[1..5,1..7] of real;
begin
   for j:=1 to 5 do
   begin
       Writeln('1.Ingrese numero de Carne del estudiante: ',j);
       readln(Nota[j][1]);
       Writeln('2.Ingrese la Nota del I Parcial: ');
       readln(Nota[j][2]);
       Writeln('3.Ingrese la Nota del II Parcial:  ');
       readln(Nota[j][3]);
       Writeln('4.Ingrese la Nota del del Ex. Final:  ');
       readln(Nota[j][4]);
       Writeln('5.Ingrese la Nota de las Tareas:  ');
       readln(Nota[j][5]);
       Writeln('6.Ingrese la Nota del I Proyecto:  ');
       readln(Nota[j][6]);
       writeln();
   end;
    for j:=1 to 5 do
   begin
 Promedio[1,1]:=Nota[1,2]*0.20; {nota1,1 esta reservada para el numero de carne}
 Promedio[2,2]:=Nota[1,3]*0.20;
 Promedio[3,3]:=Nota[1,4]*0.30;
 Promedio[4,4]:=Nota[1,5]*0.10;
 Promedio[5,5]:=Nota[1,6]*0.20;
  end;
 end;
 
 
 
 procedure Promedioestudiante;
 var i,fila,columna:integer;
     promedio:array[1..5,1..7] of real;
     PromedioFinal:real;
       resultado:string;
        PromedioFinal:=0;
    for fila:=1 to 5 do
     begin
      for columna:=1 to 5 do
      PromedioFinal:=PromedioFinal+Promedio[1,7];
         end;
 
      for i:=1 to 5 do
   begin
        if Promedio[1,6]>70 then
      resultado:='Aprobado' else
        resultado:='Reprobado';
     resultado:=Alumnos:[1,5];
   end;
end;
 
procedure Informacionfinalestudiante;
var i,info:integer;
begin
  writeln('Ingrese el numero de carne del estudiante: ');
  readln(info);
  if info=Nota[1,1] then
   begin
  writeln('******************************************');
  writeln('Carne del Estudiante:' );
  writeln('Nombre del Estudiante:');
  writeln('Cuatrimestre:');
  writeln('Nombre del Curso:');
  writeln('Nota:');
  writeln('Resultado');
  writeln('******************************************');
  writeln('Detalle de Notas:');
  writeln('******************************************');
  writeln('Nota I Parcial:');
  writeln('Nota II Parcial:');
  writeln('Nota Examen Final:');
  writeln('Nota Tareas:');
  writeln('Nota Proyectos:');
  writeln('******************************************');
  writeln('Valor Porcentual');
  writeln('******************************************');
  writeln('% I Parcial :');
  writeln('% II Parcial:');
  writeln('% Examen Final:');
  writeln('% Tareas:');
  writeln('%Proyectos:');
  writeln('******************************************')
   end
  else
  writeln('El carne solicitado no existe, verifique el numero. Gracias');
  end;
 
 
begin
     Return: Clrscr;
     writeln('************************* Bienvenido usuario **********************');
     writeln('           Este es un programa de calculo de promedios    ');
     writeln;
     writeln('   *Seleccione una de las siguientes opciones para continuar*   ');
     writeln;
     writeln('_____Opcion 1.Ingresar datos generales del curso___________________');
     writeln('_____Opcion 2.Ingresar calificaciones de los estudiantes___________');
     writeln('_____Opcion 3.Ver resultado final por estudiante.__________________');
     writeln('_____Opcion 4.Imprimir listado general de calificaciones___________');
     writeln('_____Opcion 5.Salir________________________________________________');
     readln(opcion);
 
          case opcion of
     1: begin
        ClrScr;
        Infoestudiante;
    writeln;
     goto Return;
      end;
 
 
     2: begin
        ClrScr;
        Notasestudiante;
        Promedioestudiante;
        readkey;
    writeln;
     goto Return;
     end;
 
 
     3: begin
        ClrScr;
        Informacionfinalestudiante;
    writeln;
     goto Return;
     end;
 
 
     4: begin
        ClrScr;
 
 
    writeln;
     goto Return;
     end;
 
 
     5: begin
         halt;
           end;
else
readkey;
goto Return;
end;
end.

Muchisimas gracias de antemano por cualquier ayuda brindada
saludos
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

Ayuda con este programa

Publicado por Rene Gar (58 intervenciones) el 11/08/2014 05:00:20
no he probado tu codigo pero a primer mirada, porque no guardas las notas en una variable global o sea que no este dentro de ninguna funcion asi cuando llames a la funcion promedio solo recorres ese arreglo y las vas sumando y promediando

espero que haya sido util si no mañana le doy una mejor mirada porque ando algo enfermo saludos....
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
Imágen de perfil de Jorge

Ayuda con este programa

Publicado por Jorge (11 intervenciones) el 12/08/2014 11:17:00
Bueno trate, pero aun me da un error, yo se que el problema que me manejo es de mencionar como tu dijiste la variable global y local, no estoy seguro si es por la sintaxis.

creo creo que el programa "en teoria" xD estaria completo, si no fuera por eso :/

nota: se ve mucho texto en el procedimiento "Informacionfinalestudiante" ya que debo buscar al alumno y mostrar la info por medio de su numero de carne, no puedo usar "record" por lo que utilice un case "x".

no se si es mucha molestia me darias una mano
gracias



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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
program Tarea_progra(input, output);
uses crt;
 
var    opcion:byte;
       resultado:string;
       Alumnos:array[1..5,1..5] of string;
       Nota:array[1..5,1..12] of real;
Label Return;
 
 
 
procedure Infoestudiante;
var i:integer; Alumnos:array of string; {Hay 1 hueco (Alumnos:[1,5]) para resultado(aprobado-reprobado), OJO NO hay de notafinal
                                             ya que es un dato tipo real y el resto de los componentes del arreglo son string por lo que no es compatible}
begin
   for i:=1 to 5 do
   begin
       Writeln('1.Ingrese numero de Carne del estudiante: ',i);
       readln(Alumnos[i][1]);
       Writeln('2.Ingrese nombre del estudiante: ');
       readln(Alumnos[i][2]);
       Writeln('3.cuatrimiestre del estudiante : ');
       readln(Alumnos[i][3]);
       Writeln('4.Nombre del curso del estudiante: ');
       readln(Alumnos[i][4]);
       writeln();
   end;
end;
 
 
procedure Notasestudiante;
var j:integer; Nota:array of real;
    PromedioFinal:real;
    resultado:string;
begin
   for j:=1 to 5 do
   begin
       Writeln('1.Numero de Carne del estudiante: ',j,Alumnos[j][1]);
 
       Writeln('2.Ingrese la Nota del I Parcial: ');
       readln(Nota[j][2]);
       Nota[j,3]:=Nota[j][2]*0.20;
 
       Writeln('3.Ingrese la Nota del II Parcial:  ');
       readln(Nota[j][4]);
       Nota[j,5]:=Nota[j][4]*0.20;
 
       Writeln('4.Ingrese la Nota del del Ex. Final:  ');
       readln(Nota[j][6]);
       Nota[j,7]:=Nota[j][6]*0.30;
 
       Writeln('5.Ingrese la Nota de las Tareas:  ');
       readln(Nota[j][8]);
       Nota[j,9]:=Nota[j][8]*0.10;
 
       Writeln('6.Ingrese la Nota del Proyecto:  ');
       readln(Nota[j][10]);
       Nota[j,11]:=Nota[j][10]*0.20;
 
       Nota[j,12]:= Nota[j,3]+ Nota[j,5]+ Nota[j,7]+ Nota[j,9]+Nota[j,11];
       writeln();
               end;
 
      for i:=1 to 5 do
   begin
        if Nota[1,12]>70 then
      resultado:='Aprobado' else
        resultado:='Reprobado';
        resultado:=Alumnos:[i,5];
   end;
    end;
 
 
procedure Informacionfinalestudiante;
var info:integer;
begin
  writeln('Ingrese el numero de carne del estudiante: ');
  readln(info);
 
  case info of
   Alumnos[1][1]:begin
  writeln('Carne del Estudiante:',Alumnos[1][1]);
  writeln('Nombre del Estudiante:',Alumnos[1][2]);
  writeln('Cuatrimestre:',Alumnos[1][3]);
  writeln('Nombre del Curso:',Alumnos[1][4]);
  writeln('Nota: ' ,Nota[1,12]:0:2);
  writeln('Resultado: ', Alumnos:[1,5]);
  writeln('******************************************');
  writeln('Detalle de Notas:');
  writeln('******************************************');
  writeln('Nota I Parcial:',Nota[1][2]);
  writeln('Nota II Parcial:',Nota[1][4]);
  writeln('Nota Examen Final:',Nota[1][6]);
  writeln('Nota Tareas:',Nota[1][8]);
  writeln('Nota Proyectos:',Nota[1][10]);
  writeln('******************************************');
  writeln('Valor Porcentual');
  writeln('******************************************');
  writeln('% I Parcial :',Nota[1][3]:0:2);
  writeln('% II Parcial:',Nota[1][5]:0:2);
  writeln('% Examen Final:',Nota[1][7]:0:2);
  writeln('% Tareas:',Nota[1][9]:0:2);
  writeln('%Proyectos:',Nota[1][11]:0:2);
   end;
 
  Alumnos[2][1]:begin
     writeln('Carne del Estudiante:',Alumnos[2][1]);
  writeln('Nombre del Estudiante:',Alumnos[2][2]);
  writeln('Cuatrimestre:',Alumnos[2][3]);
  writeln('Nombre del Curso:',Alumnos[2][4]);
  writeln('Nota: ' ,Nota[2,12]:0:2);
  writeln('Resultado: ', Alumnos:[2,5]);
  writeln('******************************************');
  writeln('Detalle de Notas:');
  writeln('******************************************');
  writeln('Nota I Parcial:',Nota[2][2]);
  writeln('Nota II Parcial:',Nota[2][4]);
  writeln('Nota Examen Final:',Nota[2][6]);
  writeln('Nota Tareas:',Nota[2][8]);
  writeln('Nota Proyectos:',Nota[2][10]);
  writeln('******************************************');
  writeln('Valor Porcentual');
  writeln('******************************************');
  writeln('% I Parcial :',Nota[2][3]:0:2);
  writeln('% II Parcial:',Nota[2][5]:0:2);
  writeln('% Examen Final:',Nota[2][7]:0:2);
  writeln('% Tareas:',Nota[2][9]:0:2);
  writeln('%Proyectos:',Nota[2][11]:0:2);
   end;
 
  Alumnos[3][1]:begin
     writeln('Carne del Estudiante:',Alumnos[3][1]);
  writeln('Nombre del Estudiante:',Alumnos[3][2]);
  writeln('Cuatrimestre:',Alumnos[3][3]);
  writeln('Nombre del Curso:',Alumnos[3][4]);
  writeln('Nota: ' ,Nota[3,12]:0:2);
  writeln('Resultado: ', Alumnos:[3,5]);
  writeln('******************************************');
  writeln('Detalle de Notas:');
  writeln('******************************************');
  writeln('Nota I Parcial:',Nota[3][2]);
  writeln('Nota II Parcial:',Nota[3][4]);
  writeln('Nota Examen Final:',Nota[3][6]);
  writeln('Nota Tareas:',Nota[3][8]);
  writeln('Nota Proyectos:',Nota[3][10]);
  writeln('******************************************');
  writeln('Valor Porcentual');
  writeln('******************************************');
  writeln('% I Parcial :',Nota[3][3]:0:2);
  writeln('% II Parcial:',Nota[3][5]:0:2);
  writeln('% Examen Final:',Nota[3][7]:0:2);
  writeln('% Tareas:',Nota[3][9]:0:2);
  writeln('%Proyectos:',Nota[3][11]:0:2);
   end;
 
  Alumnos[4][1]:begin
     writeln('Carne del Estudiante:',Alumnos[4][1]);
  writeln('Nombre del Estudiante:',Alumnos[4][2]);
  writeln('Cuatrimestre:',Alumnos[4][3]);
  writeln('Nombre del Curso:',Alumnos[4][4]);
  writeln('Nota: ' ,Nota[4,12]:0:2);
  writeln('Resultado: ', Alumnos:[4,5]);
  writeln('******************************************');
  writeln('Detalle de Notas:');
  writeln('******************************************');
  writeln('Nota I Parcial:',Nota[4][2]);
  writeln('Nota II Parcial:',Nota[4][4]);
  writeln('Nota Examen Final:',Nota[4][6]);
  writeln('Nota Tareas:',Nota[4][8]);
  writeln('Nota Proyectos:',Nota[4][10]);
  writeln('******************************************');
  writeln('Valor Porcentual');
  writeln('******************************************');
  writeln('% I Parcial :',Nota[4][3]:0:2);
  writeln('% II Parcial:',Nota[4][5]:0:2);
  writeln('% Examen Final:',Nota[4][7]:0:2);
  writeln('% Tareas:',Nota[4][9]:0:2);
  writeln('%Proyectos:',Nota[4][11]:0:2);
   end;
 
  Alumnos[5][1]:begin
     writeln('Carne del Estudiante:',Alumnos[5][1]);
  writeln('Nombre del Estudiante:',Alumnos[5][2]);
  writeln('Cuatrimestre:',Alumnos[5][3]);
  writeln('Nombre del Curso:',Alumnos[5][4]);
  writeln('Nota: ' ,Nota[5,12]:0:2);
  writeln('Resultado: ', Alumnos:[5,5]);
  writeln('******************************************');
  writeln('Detalle de Notas:');
  writeln('******************************************');
  writeln('Nota I Parcial:',Nota[5][2]);
  writeln('Nota II Parcial:',Nota[5][4]);
  writeln('Nota Examen Final:',Nota[5][6]);
  writeln('Nota Tareas:',Nota[5][8]);
  writeln('Nota Proyectos:',Nota[5][10]);
  writeln('******************************************');
  writeln('Valor Porcentual');
  writeln('******************************************');
  writeln('% I Parcial :',Nota[5][3]:0:2);
  writeln('% II Parcial:',Nota[5][5]:0:2);
  writeln('% Examen Final:',Nota[5][7]:0:2);
  writeln('% Tareas:',Nota[5][9]:0:2);
  writeln('%Proyectos:',Nota[5][11]:0:2);
   end;
 
  else
  writeln('El carne solicitado no existe, verifique el numero. Gracias');
  end;
end;
 
 
procedure Datosgenerales;
begin
 
writeln('* ----------------------------------------------------------------------------------------------- *');
writeln('*                                                                                                 *');
writeln('*                       Curso: Matemáticas I');
writeln('*                       Profesor: Adrian Arguello ');
writeln('*                                                                                                 *');
writeln('* ----------------------------------------------------------------------------------------------- *');
 
 
 writeln('|      Carne      |      Nombre     |      Cuatrimestre     |      Curso      |       Nota    |      Resultado   |');
 writeln('|',Alumnos[1][1],'|',Alumnos[1][2],'|',Alumnos[1][3]      ,'|',Alumnos[1][4],'|',Nota[1][12],'|',Alumnos[1][5]  '|');
 writeln('|',Alumnos[2][1],'|',Alumnos[2][2],'|',Alumnos[2][3]      ,'|',Alumnos[2][4],'|',Nota[2][12],'|',Alumnos[2][5]  '|');
 writeln('|',Alumnos[3][1],'|',Alumnos[3][2],'|',Alumnos[3][3]      ,'|',Alumnos[3][4],'|',Nota[3][12],'|',Alumnos[3][5]  '|');
 writeln('|',Alumnos[4][1],'|',Alumnos[4][2],'|',Alumnos[4][3]      ,'|',Alumnos[4][4],'|',Nota[4][12],'|',Alumnos[4][5]  '|');
 writeln('|',Alumnos[5][1],'|',Alumnos[5][2],'|',Alumnos[5][3]      ,'|',Alumnos[5][4],'|',Nota[5][12],'|',Alumnos[5][5]  '|');
 
 
  end;
 
 
 
begin
     Return: Clrscr;
     writeln('************************* Bienvenido usuario **********************');
     writeln('           Este es un programa de calculo de promedios    ');
     writeln;
     writeln('   *Seleccione una de las siguientes opciones para continuar*   ');
     writeln;
     writeln('_____Opcion 1.Ingresar datos generales del curso___________________');
     writeln('_____Opcion 2.Ingresar calificaciones de los estudiantes___________');
     writeln('_____Opcion 3.Ver resultado final por estudiante.__________________');
     writeln('_____Opcion 4.Imprimir listado general de calificaciones___________');
     writeln('_____Opcion 5.Salir________________________________________________');
     readln(opcion);
 
          case opcion of
     1: begin
        ClrScr;
        Infoestudiante;
    writeln;
     goto Return;
      end;
 
 
     2: begin
        ClrScr;
        Notasestudiante;
 
        readkey;
    writeln;
     goto Return;
     end;
 
 
     3: begin
        ClrScr;
        Informacionfinalestudiante;
    writeln;
     goto Return;
     end;
 
 
     4: begin
        ClrScr;
        Datosgenerales;
    writeln;
     goto Return;
     end;
 
 
     5: begin
         halt;
           end;
else
readkey;
goto Return;
end;
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
Imágen de perfil de Jorge

Ayuda con este programa

Publicado por Jorge (11 intervenciones) el 13/08/2014 10:32:07
actualizado:

-no se por que no me deja guardar en Alumnos[i,5] la variable resultado si es char para los 5 alumnos que contiene "aprobado o reprobado".

- for i:=1 to 5 do
if j=Alumnos[i,1] es buscar en el arreglo si es igual al numero ingreso mostrar la informacion por pantalla, no se si la sintaxis es la correcta.

-el procedimiento: Informacionfinalestudiante, a la hora qde querer mostrar ols resultados aparece "illegal qualifier".

les agradecere cualquier comentario
saludos

---------------------------------------------------------------------------------------------------
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
178
179
180
181
182
183
184
program Tarea_progra(input, output);
uses crt;
 
var    opcion:byte;
       resultado:string;
       Alumnos:array of string;
       Nota:array of real;
Label Return;
 
 
                                                                                                {NOTAS DEL CODIGO}
procedure Infoestudiante;
var i:integer; Alumnos:array[1..5,1..5] of string; {Hay 1 hueco (Alumnos:[1,5]) para resultado(aprobado-reprobado), OJO NO hay de notafinal
                                             ya que es un dato tipo real y el resto de los componentes del arreglo son string por lo que no es compatible}
begin
   for i:=1 to 5 do
   begin
       Writeln('1.Ingrese numero de Carne del estudiante: ',i);  {Se guardan estos 4 datos en el arreglo "alumnos" de tipo string, se usa un contador para los 5 alumnos}
       readln(Alumnos[i][1]);
       Writeln('2.Ingrese nombre del estudiante: ');
       readln(Alumnos[i][2]);
       Writeln('3.cuatrimiestre del estudiante : ');
       readln(Alumnos[i][3]);
       Writeln('4.Nombre del curso del estudiante: ');
       readln(Alumnos[i][4]);
       writeln();
   end;
end;
 
 
procedure Notasestudiante;
var j,i:integer; Nota:array[1..5,1..12] of real;
    resultado:string;
begin
   for j:=1 to 5 do
   begin
       Writeln('1.Numero de Carne del estudiante: ',j, Alumnos[j,1]);   {Muestra el numero de carne del estudiante guardado en el arreglo anterior, para ingresar las notas}
 
       Writeln('2.Ingrese la Nota del I Parcial: ');
       readln(Nota[j,2]);
       Nota[j,3]:=Nota[j,2]*0.20; {se ingresa la nota, se guarda, y la casilla que sigue se guarda su valor porcentual}
 
       Writeln('3.Ingrese la Nota del II Parcial:  ');
       readln(Nota[j,4]);
       Nota[j,5]:=Nota[j,4]*0.20;
 
       Writeln('4.Ingrese la Nota del del Ex. Final:  ');
       readln(Nota[j,6]);
       Nota[j,7]:=Nota[j,6]*0.30;
 
       Writeln('5.Ingrese la Nota de las Tareas:  ');
       readln(Nota[j,8]);
       Nota[j,9]:=Nota[j,8]*0.10;
 
       Writeln('6.Ingrese la Nota del Proyecto:  ');
       readln(Nota[j,10]);
       Nota[j,11]:=Nota[j,10]*0.20;
 
       Nota[j,12]:= Nota[j,3]+ Nota[j,5]+ Nota[j,7]+ Nota[j,9]+Nota[j,11];  {la ultima casilla del arreglo "Nota" esta guardado la suma de los porcentajes de cada alumno}
       writeln();
               end;
 
      for i:=1 to 5 do
   begin
        if Nota[i,12]>70 then    {si el numero gurdado en la casilla i-12 que correponde al promedio final, es mayor o menor a 70, dara como aprobado o reprobado}
      resultado:='Aprobado' else
        resultado:='Reprobado';
        Alumnos[i,5]:=resultado;  {el resultado aprobado y reprobado se guarda en la ultima casilla del arrelo "Alumnos"}
     end;
    end;
 
 
procedure Informacionfinalestudiante;
var i:integer;
    j:string;
begin
  writeln('Ingrese el numero de carne del estudiante: ');
  readln(j);
 
  for i:=1 to 5 do
   if j=Alumnos[i,1] then   {si en la primera casilla fila-columna del arrglo "alumnos"(esta guardado el numero de carne)es igual al numero ingresado por el usuario, en este caso "j", muestre en pantalla la informacion}
  writeln('Carne del Estudiante:',Alumnos[i,1]);
  writeln('Nombre del Estudiante:',Alumnos[i,2]);
  writeln('Cuatrimestre:',Alumnos[i,3]);
  writeln('Nombre del Curso:',Alumnos[i,4]);
  writeln('Nota: ' ,Nota[i,12]:0:2);
  writeln('Resultado: ', Alumnos:[i,5]);
  writeln('******************************************');
  writeln('Detalle de Notas:');
  writeln('******************************************');
  writeln('Nota I Parcial:',Nota[i,2]);
  writeln('Nota II Parcial:',Nota[i,4]);
  writeln('Nota Examen Final:',Nota[i,6]);
  writeln('Nota Tareas:',Nota[i,8]);
  writeln('Nota Proyectos:',Nota[i,10]);
  writeln('******************************************');
  writeln('Valor Porcentual');
  writeln('******************************************');
  writeln('% I Parcial :',Nota[i,3]:0:2);
  writeln('% II Parcial:',Nota[i,5]:0:2);
  writeln('% Examen Final:',Nota[i,7]:0:2);
  writeln('% Tareas:',Nota[i,9]:0:2);
  writeln('%Proyectos:',Nota[i,11]:0:2)
  end;
 
 
procedure Datosgenerales;
begin
 
writeln('* ----------------------------------------------------------------------------------------------- *');
writeln('*                                                                                                 *');
writeln('*                       Curso: Matemáticas I');
writeln('*                       Profesor: Adrian Arguello ');
writeln('*                                                                                                 *');
writeln('* ----------------------------------------------------------------------------------------------- *');
 
 
 writeln('|     Carne       |      Nombre     |     Cuatrimestre   |     Curso       |         Nota      |     Resultado   |');    {Muestra por pantalla las casillas donde estan guardados los datos de los alumnos, excepto notafinal, ya es un dato real por lo que no se puede agregar al arrelo "Alumnos" que es de tipo string}
 writeln('|',Alumnos[1,1], '|',Alumnos[1,2], '|',Alumnos[1,3]    ,'|',Alumnos[1,4], '|',Nota[1,12]:0:2, '|',Alumnos[1,5]  '|');
 writeln('|',Alumnos[2,1], '|',Alumnos[2,2], '|',Alumnos[2,3]    ,'|',Alumnos[2,4], '|',Nota[2,12]:0:2, '|',Alumnos[2,5]  '|');
 writeln('|',Alumnos[3,1], '|',Alumnos[3,2], '|',Alumnos[3,3]    ,'|',Alumnos[3,4], '|',Nota[3,12]:0:2, '|',Alumnos[3,5]  '|');
 writeln('|',Alumnos[4,1], '|',Alumnos[4,2], '|',Alumnos[4,3]    ,'|',Alumnos[4,4], '|',Nota[4,12]:0:2, '|',Alumnos[4,5]  '|');
 writeln('|',Alumnos[5,1], '|',Alumnos[5,2], '|',Alumnos[5,3]    ,'|',Alumnos[5,4], '|',Nota[5,12]:0:2, '|',Alumnos[5,5]  '|');
 
 
  end;
 
 
 
begin
     Return: Clrscr;
     writeln('************************* Bienvenido usuario **********************');     {Menu visible por el usuario}
     writeln('           Este es un programa de calculo de promedios    ');
     writeln;
     writeln('   *Seleccione una de las siguientes opciones para continuar*   ');
     writeln;
     writeln('_____Opcion 1.Ingresar datos generales del curso___________________');
     writeln('_____Opcion 2.Ingresar calificaciones de los estudiantes___________');
     writeln('_____Opcion 3.Ver resultado final por estudiante.__________________');
     writeln('_____Opcion 4.Imprimir listado general de calificaciones___________');
     writeln('_____Opcion 5.Salir________________________________________________');
     readln(opcion);
 
          case opcion of   {se usa un "case" para utilizar el menu}
     1: begin
        ClrScr;
        Infoestudiante;
    writeln;
     goto Return;
      end;
 
 
     2: begin
        ClrScr;
        Notasestudiante;
    writeln;
     goto Return;
     end;
 
 
     3: begin
        ClrScr;
        Informacionfinalestudiante;
    writeln;
     goto Return;
     end;
 
 
     4: begin
        ClrScr;
        Datosgenerales;
    writeln;
     goto Return;
     end;
 
 
     5: begin
         halt;  {se cierra el programa}
           end;
else
readkey;
goto Return;
end;
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
sin imagen de perfil

Ayuda con este programa

Publicado por Rene Gar (58 intervenciones) el 14/08/2014 04:58:50
Puff aqui esta tu programa funciona pero se puede mejorar un monton no lo hice porque es tu tarea no la mia pero aun asi creo que cumple todas las expectativas exepto las de una bonita interface eso lo arreglas tu

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
var{Varible globales }
  Opcion:byte;
  Alumnos:array[1..5,1..4]of string;
  Nota:array[1..5,1..5]of double; {nota de cada materia o examen de cada alumno}
  Resultado:array[1..5]of string;{aproabdo o reprobado   }
  promedio:array[1..5]of double; {promedio en % porcentaje }
 
{Funciones o Metodos}
procedure InfoEstudiante(); {Funcin para pedir los datos de los alumnos}
var
  i:byte;
begin
    for i:=1 to 5 do
    begin
      Writeln('Ingrese numero de Carne del estudiante ',i);
      readln(Alumnos[i][1]);
      Writeln('Ingrese Nombre del estudiante ',i);
      readln(Alumnos[i][2]);
      Writeln('Ingrese Cuatrimestre del estudiante ',i);
      readln(Alumnos[i][3]);
      Writeln('Ingrese Nombre del curso del Estudiante ',i);
      readln(Alumnos[i][4]);
      writeln();
    end;
end;
procedure Nota_Estudiante();{FUncion para pedir nota de los alumnos}
var
i:byte;
begin
     for i:=1 to 5 do
     begin
       writeln('Ingreso de Notas del estudiante ',Alumnos[i][2],' ,Carne: ',Alumnos[i][1]);
       writeln();
       writeln('Ingrese la nota del primer parcial I ');
       readln(Nota[i][1]);
       Nota[i][1]:=Nota[i][1]*0.20;
       Writeln('Ingrese la Nota del II Parcial:  ');
       readln(Nota[i,2]);
       Nota[i,2]:=Nota[i,2]*0.20;
       Writeln('Ingrese la Nota del del Ex. Final:  ');
       readln(Nota[i,3]);
       Nota[i,3]:=Nota[i,3]*0.30;
       Writeln('Ingrese la Nota de las Tareas:  ');
       readln(Nota[i,4]);
       Nota[i,4]:=Nota[i,4]*0.10;
       Writeln('Ingrese la Nota del Proyecto:  ');
       readln(Nota[i,5]);
       Nota[i,5]:=Nota[i,5]*0.20;
 
       promedio[i]:=Nota[i][1]+ Nota[i][2]+Nota[i][3]+Nota[i][4]+Nota[i][5];
       if promedio[i]>70 then
         Resultado[i]:='Aprobado'
       else
         Resultado[i]:='Reprobado';
     end;
 
end;
 
procedure Informacionfinalestudiante;
var i:byte;
    j:string;
begin
  writeln('Ingrese el numero de carne del estudiante: ');
  readln(j);
 
  for i:=1 to 5 do
  begin
  if j=Alumnos[i,1] then
  begin
     writeln('Carne del Estudiante:',Alumnos[i,1]);
     writeln('Nombre del Estudiante:',Alumnos[i,2]);
     writeln('Cuatrimestre:',Alumnos[i,3]);
     writeln('Nombre del Curso:',Alumnos[i,4]);
     writeln('Nota: ' ,promedio[i]:0:2);
     writeln('Resultado: ', Resultado[i]);
     writeln('******************************************');
     writeln('Detalle de Notas:');
     writeln('******************************************');
     writeln('Nota I Parcial:',Nota[i,1]);
     writeln('Nota II Parcial:',Nota[i,2]);
     writeln('Nota Examen Final:',Nota[i,3]);
     writeln('Nota Tareas:',Nota[i,4]);
     writeln('Nota Proyectos:',Nota[i,5]);
     writeln('******************************************');
     writeln('Valor Porcentual');
     writeln('******************************************');
     writeln('% I Parcial :20 %');
     writeln('% II Parcial:20 %');
     writeln('% Examen Final: 30%');
     writeln('% Tareas: 10%');
     writeln('%Proyectos: 20%');
     break;{sale del bucle para que no siga dando vueltas}
   end;
  end;
end;
 
procedure Datosgenerales();
begin
 
writeln('* ----------------------------------------------------------------------------------------------- *');
writeln('*                                                                                                 *');
writeln('*                       Curso: Matemáticas I');
writeln('*                       Profesor: Adrian Arguello ');
writeln('*                                                                                                 *');
writeln('* ----------------------------------------------------------------------------------------------- *');
 
 
 writeln('|     Carne       |      Nombre     |     Cuatrimestre   |     Curso       |         Nota      |     Resultado   |');
 writeln('|',Alumnos[1,1], '|',Alumnos[1,2], '|',Alumnos[1,3]    ,'|',Alumnos[1,4], '|',promedio[1]:0:2, '|',Resultado[1]  ,'|');
 writeln('|',Alumnos[2,1], '|',Alumnos[2,2], '|',Alumnos[2,3]    ,'|',Alumnos[2,4], '|',promedio[2]:0:2, '|',Resultado[2]  ,'|');
 writeln('|',Alumnos[3,1], '|',Alumnos[3,2], '|',Alumnos[3,3]    ,'|',Alumnos[3,4], '|',promedio[3]:0:2, '|',Resultado[3]  ,'|');
 writeln('|',Alumnos[4,1], '|',Alumnos[4,2], '|',Alumnos[4,3]    ,'|',Alumnos[4,4], '|',promedio[4]:0:2, '|',Resultado[4]  ,'|');
 writeln('|',Alumnos[5,1], '|',Alumnos[5,2], '|',Alumnos[5,3]    ,'|',Alumnos[5,4], '|',promedio[5]:0:2, '|',Resultado[5]  ,'|');
 
 
end;
 
begin
 Repeat
  clrscr;
  Writeln('Bienvenido al calculo de promedios By Rene GAR');
  Writeln();
  Writeln('seleccione una de estas opciones parar continuar');
  writeln();
  writeln('(1) Ingresar Datos Generales del Curso');
  writeln('(2) Ingresar Calificaciones de los estudiantes ');
  writeln('(3) Ver Resultado Final por EStudiante ');
  Writeln('(4) Imprimir lista general de Calificaciones ');
  Writeln('(5) Salir ');
  writeln();
  readln(Opcion);
 
  case opcion of
   1: InfoEstudiante;
   2: Nota_Estudiante;
   3: Informacionfinalestudiante;
   4: Datosgenerales;
   5: exit;
   else writeln('escoga uno correcto');
  end;
 
  writeln('De clic para continuar ');
  readln;
 
  until opcion=5;
 
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 con este programa

Publicado por ramon (2158 intervenciones) el 14/08/2014 12:56: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
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
178
179
180
181
182
183
184
program estudiantes;
 uses
    crt;
  type
    Alumnos = array[1..5,1..6] of string[80];
    Notatas = array[1..5,1..6] of real;
    promedio = array[1..5,1..7] of real;
  const
     vanota : array[1..5] of real = (
     0.20,0.20,0.30,0.10,0.20);
  var
     datos : alumnos;
      nota : notatas;
     prome : promedio;
      cont : integer;
 
  procedure Infoestudiante;
  var
     i : integer;
  begin
    for i := 1 to 5 do
    begin
       clrscr;
       writeln('  Datos Estudiante N. ',i);
       Write('1.  Ingrese numero de Carne del estudiante : ');
       readln(datos[i,1]);
       Write('2.  Ingrese nombre del estudiante          : ');
       readln(datos[i,2]);
       Write('3.  Cuatrimiestre del estudiante           : ');
       readln(datos[i,3]);
       Write('4.  Nombre del curso del estudiante        : ');
       readln(datos[i,4]);
       writeln;
   end;
  end;
 
  procedure Notasestudiante;
  var
     s, j : integer;
     resul : real;
  begin
      for j := 1 to 5 do
      begin
         clrscr;
         writeln('  Notas Estudiante N. ',j);
         Write('1.  Ingrese numero de Carne del estudiante : ');
         readln(Nota[j,1]);
         Write('2.  Ingrese la Nota del I Parcial          : ');
         readln(Nota[j,2]);
         prome[j,1] := Nota[j,2] * vanota[1];
         Write('3.  Ingrese la Nota del II Parcial         : ');
         readln(Nota[j,3]);
         prome[j,2] := Nota[j,3] * vanota[2];
         Write('4.  Ingrese la Nota del del Ex. Final      : ');
         readln(Nota[j,4]);
         prome[j,3] := Nota[j,4] * vanota[3];
         Write('5.  Ingrese la Nota de las Tareas          : ');
         readln(Nota[j,5]);
         prome[j,4] := Nota[j,5] * vanota[4];
         Write('6.  Ingrese la Nota del I Proyecto         : ');
         readln(Nota[j,6]);
         prome[j,5] := Nota[j,6] * vanota[5];
         resul := 0.0;
         for s := 1 to 5 do
         resul := resul + prome[j,s];
         prome[j,6] := resul;
      end;
  end;
 
  procedure Promedioestudiante;
  var
     i : integer;
     resultado : string[80];
  begin
    for i := 1 to 5 do
     begin
       if Prome[i,6] > 70 then
      resultado := 'Aprobado'
    else
     resultado := 'Reprobado';
     datos[i,5] := resultado;
   end;
 end;
 
 
 procedure Informacionfinalestudiante;
 var
   i : integer;
   info : string[80];
   enco : boolean;
  begin
     clrscr;
     enco := false;
     writeln('  Ingrese el numero de carne del estudiante : ');
     readln(info);
     for i := 1 to 5 do
    begin
      if info = datos[i,1] then
      begin
       writeln('******************************************');
       writeln('Carne del Estudiante  : ',datos[i,1]);
       writeln('Nombre del Estudiante : ',datos[i,2]);
       writeln('Cuatrimestre          : ',datos[i,3]);
       writeln('Nombre del Curso      : ',datos[i,4]);
       writeln('Nota                  : ',prome[i,6]:0:2);
       writeln('Resultado             : ',datos[i,5]);
       writeln('******************************************');
       writeln('Detalle de Notas:');
       writeln('******************************************');
       writeln('Nota I Parcial    : ',prome[i,1]:0:2);
       writeln('Nota II Parcial   : ',prome[i,2]:0:2);
       writeln('Nota Examen Final : ',prome[i,3]:0:2);
       writeln('Nota Tareas       : ',prome[i,4]:0:2);
       writeln('Nota Proyectos    : ',prome[i,5]:0:2);
       writeln('******************************************');
       writeln('Valor Porcentual');
       writeln('******************************************');
       writeln('% I Parcial    : ',vanota[1]:0:2);
       writeln('% II Parcial   : ',vanota[2]:0:2);
       writeln('% Examen Final : ',vanota[3]:0:2);
       writeln('% Tareas       : ',vanota[4]:0:2);
       writeln('%Proyectos     : ',vanota[5]:0:2);
       writeln('******************************************');
       enco := true;
       readkey;
       break;
      end;
     end;
     if enco = false then
    writeln('El carne solicitado no existe, verifique el numero. Gracias');
  end;
 
  procedure listado_general;
  var
    u : integer;
 
    begin
       clrscr;
       writeln('Carne / Nombre / Cuatrimestre / Curso / promediofinal / Resultado');
       writeln;
       for u := 1 to 5 do
       writeln(datos[u,1],'  ',datos[u,2],'  ',datos[u,3],'  ',datos[u,4],'  ',
       prome[u,6],'  ',datos[u][6]);
       readkey;
    end;
 
  procedure menu;
  var
    sal : boolean;
    tecla : char;
  begin
      sal := false;
     repeat
         clrscr;
         writeln('************************* Bienvenido usuario **********************');
         writeln('               Este es un programa de calculo de promedios         ');
         writeln('       *Seleccione una de las siguientes opciones para continuar*  ');
         writeln;
         writeln('  1. Ingresar datos generales del curso');
         writeln('  2. Ingresar calificaciones de los estudiantes');
         writeln('  3. Ver resultado final por estudiante.');
         writeln('  4. Imprimir listado general de calificaciones');
         writeln('  5. Salir');
         repeat
            tecla := readkey;
         until tecla in['1','2','3','4','5'];
         clrscr;
    case tecla of
 '1' : Infoestudiante;
 '2' : begin
       Notasestudiante;
       Promedioestudiante;
      end;
 '3' : Informacionfinalestudiante;
 '4' : listado_general;
 '5' : 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