Pascal/Turbo Pascal - AYUDENME POR FAVOR CON ESTE PROGRAMA

 
Vista:

AYUDENME POR FAVOR CON ESTE PROGRAMA

Publicado por JOSERYN (5 intervenciones) el 23/11/2006 06:23:30
hola como hago para que me ayuden a resolver el siguiente programa en pascal 7 con vectores, procedure y functiones no se como resolverlos : Dados los nombres de los 35 alumnos de la sección E y las notas de sus tres exámenes, realizar un programa en pascal que almacene los nombres y la nota definitiva (promedio) de cada uno, en dos vectores diferentes. Muestre al final un listado de los alumnos con su nota respectiva. Indique alumno con mayor y menor promedio. por favor ayudenme. 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

RE:AYUDENME POR FAVOR CON ESTE PROGRAMA

Publicado por Carlos Guimaraenz (265 intervenciones) el 23/11/2006 12:53:03
Te contesté más abajo, donde hiciste los dos posts seguidos.
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

RE:AYUDENME POR FAVOR CON ESTE PROGRAMA

Publicado por JOSERYN (5 intervenciones) el 23/11/2006 17:21:15
HOLA ABRAZOS A TI TAMBIEN DE VERDAD LAS PREGUNTAS LA HICE ANOCHE TE ENVIO LOS CODIGOS QUE TENGO PERO ME FALTA PONERLE EN PROCEDURE Y FUNCTIONES ASI NO ME LO ACEPTARON: Y MAS ABAJO ESTA COMO DEBERIA SER PERO NO SE COMO HACERLO POR FAVOR ME PODRIAS COMPLETAR O CUALQUIER OTRAS PREGUNTA YO TE LO EXPLICO ESPERO QUE CON ESTE PRIMERO ES ASI PERO CON VECTORES ESTE NO TIENE VECTORES ADEMAS NO TIENE PROCEDURE NI FUNCIONES

Program ALUMNOS;
Uses winCrt;
Const numalumnos = 2;
Type tiponotas = record
nombre: String;
examen1, examen2, examen3: real
end;
notasclase = array [1..Numalumnos] of tiponotas;
Var I3: notasclase;
nota1, nota2,nota3: real;
alumno: String;
index: integer;
Begin
ClrScr;
for index := 1 to numalumnos do
begin
write('Nombre de alumno(',index,'): ');
readln(alumno);
write('Nota del examen1: ');
readln(nota1);
write('Nota del examen2: ');
readln(nota2);
write('Nota del examen3: ');
readln(nota3);
writeln;
with i3[index] do
begin
nombre := alumno;
examen1 := nota1;
examen2 := nota2;
examen3:= nota3
end
end;
ClrScr;
writeln('NOMBRE ':10,'examen1':10,'examen2':10,'examen3':10,'Media':10,' CALIFICACION');
for index := 1 to 75 do write('*');
writeln;
for index := 1 to numalumnos do
with i3[index] do
begin
{Escribir la lista con los resultados.}
nota1 := (examen1+examen2+examen3)/2;
{Se calcula la media.}
write(nombre:10,examen1:10:2,examen2:10:2,examen3:10:2);
write(nota1:10:2);
{Si la nota media es superior a 5, el alumno est aprobado:}
if nota1 >= 10 then writeln(' *** APROBO *** ')
else writeln('*** NO APROBO***')
end;
readkey
end.


ASI DEBERIA SER Y NO SE COMO HACERLO AYUDAME COMPLETARLO GRACIAS

PROGRAM ALUMNOS;
USES WINCRT;
CONST
N=3;
TYPE VECTOR= ARRAY [1..N] OF INTEGER;
TYPE NOMBRE= ARRAY [1..N] OF STRING;
VAR
NOTA, RESUL: VECTOR;
NOM: STRING;
I,J, SUMA: INTEGER;

PROCEDURE INICIALIZAR;
BEGIN
FOR I:=1 TO N DO
BEGIN
NOTA[I]:=0;
RESUL[J]:=0;
END;
END;
PROCEDURE LEERNOM(VAR NOMBRE:VECTOR);
VAR
Y: INTEGER;
BEGIN

FOR Y:= 1 TO 3 DO
BEGIN
WRITELN ('INTRODUZCA EL NOMBRE');
READLN (NOM);

END;
END;

PROCEDURE LEERNOTA(VAR VEC:VECTOR);
VAR
Y: INTEGER;
BEGIN

FOR Y:= 1 TO 3 DO
BEGIN
WRITELN ('INTRODUZCA LA NOTA');
READ (NOTA[Y]);

END;
END;

PROCEDURE PROMEDIO (VAR PROM: REAL);
BEGIN
FOR I:=1 TO N DO
BEGIN
READLN (NOTA[I]);
SUMA:= SUMA + NOTA[I];
END;
PROM:= SUMA/3;
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

RE:AYUDENME POR FAVOR CON ESTE PROGRAMA

Publicado por Carlos Guimaraenz (265 intervenciones) el 23/11/2006 18:34:51
Hola Jose! ¿Quién te dijo de hacerlo así, profesores o algún compañero?
Noto algunas cosas que no van a funcionar tal como están. Primero que hay muchas variables globales, pero en éstas no figura el vector de nombres, por ejemplo. Yo te propongo el siguiente código del programa principal, y vos implementás los procedimientos y funciones... en lo que respecta al llenado del vector, no sería necesario inicializarlo en este caso, pero es una buena práctica para otros momentos.

TYPE
TVECTOR_NOTAS = ARRAY [1..N] OF REAL; {o INTEGER}
TVECTOR_NOMBRES = ARRAY [1..N] OF STRING;

{CODIGO PRINCIPAL}
VAR
VECTOR_NOTAS : TVECTOR_NOTAS;
VECTOR_NOMBRES : TVECTOR_NOMBRES;
BEGIN
{procedure que lee los nombres y las notas, promedia éstas últimas y guarda los datos en sus respectivos vectores}
LEER_INFORMACION (VECTOR_NOTAS,VECTOR_NOMBRES);
{recorre ambos vectores en paralelo, mostrando nombre y promedio}
MOSTRAR_LISTADO (VECTOR_NOTAS,VECTOR_NOMBRES);
INFORMAR_MAX_Y_MIN (VECTOR_NOTAS,VECTOR_NOMBRES);
END.

Puedes cambiarle los nombres a los procedures, los intenté poner lo más descriptivo posible. Puse el INFORMAR por separado para darle mayor claridad. Pero si te insisten con recorrer los vectores la menor cantidad posible de veces, puedes incluirlo, por ejemplo, en MOSTRAR_LISTADO, que a medida que va recorriendo y mostrando los datos, verifica las notas mínima y máxima.
Ten en cuenta que en el procedimiento LEER_INFORMACION los arreglos se pasan por referencia, en los restantes puedes pasarlos por valor.
Y también recuerda que el arreglo tiene que ser de tipo real, o bien integer, pero considerando que para sacar el promedio y guardarlo en un integer, debes usar DIV y no el operador /.

Intenta implementarlos, y si te trabas vuelve... un abrazo!
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

RE:AYUDENME POR FAVOR CON ESTE PROGRAMA

Publicado por JOSERYN (5 intervenciones) el 23/11/2006 21:40:14
Si Carlos gracias por tu pronta respuesta, y fue la profesora de verdad que es urgente pero mira lo nuevo que tengo pero todavia me falta ordenarlo de mayor o menor la notas de verdad te explicas muy bien quisiera mostrate lo ultimo para que me completes lo de mostrar el alumno con mayor y menor nota por favor, aqui solo estoy utilizando para dos alumnos solo me falta cambiarle la constante N=2 a 35, pero no se como hacerlo para que me muestre el de mayor y menor promedio si me lo puedes completar por favor, gracias:

PROGRAM ALUMNOS;
USES WINCRT;
CONST
N = 2;
NNotas = 2;
TYPE
Promedio = ARRAY [1..N] OF Real;
VECTORNOM = ARRAY [1..N] OF STRING;
NOTAS = ARRAY [1..NNotas] OF INTEGER;
VAR
NOTA, RESUL : NOTAS;
NOM : STRING;
Nombre : VECTORNOM;
Prome : Promedio;
I,J, SUMA : INTEGER;

PROCEDURE INICIALIZAR;
BEGIN
FOR I:=1 TO N DO
BEGIN
NOTA[I]:=0;
END;
END;
PROCEDURE LEERNOM(VAR NOM:String; y:integer);
BEGIN
WRITELN ('INTRODUZCA EL NOMBRE DEL ALUMNO : ' , y);
READLN (NOM);
END;

PROCEDURE LEERNOTA(VAR NOTA:NOTAS);
var
y: integer;
BEGIN
WRITELN ('INTRODUZCA SUS NOTAS');
For y:= 1 to NNotas do
READln(NOTA[y]);
END;

PROCEDURE CalcularPROMEDIO(VAR PROM:Real; Nota:Notas; y:integer);
var
w : integer;
BEGIN
suma:= 0;
FOR w:=1 TO NNotas DO
SUMA:= SUMA + NOTA[w];
PROM:= SUMA/NNotas;
END;

Procedure imprimir(nomb: VECTORNOM; Pro:Promedio);
begin

for i:= 1 to N do
writeln ('El alumno : ', nomb[i],' tiene ',pro[i]:2:2, ' de promedio' )

end;
{cuerpo del programa}
BEGIN
For i:= 1 to N do
begin
LEERNOM (Nombre[i],i);
LEERNOTA (NOTA);
CalcularPROMEDIO (PROMe[i], nota, i);
writeln;
end;
writeln('************************ Resultados ****************************');
imprimir (Nombre, Prome);
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