programa de ordenacion y promedio
(**********************************************)
(* Ola necesito calcular el promedio *)
(* de tres calificaciones de n alumnos, *)
(* su promedio total y enlistarlos de *)
(* forma ascendente ...si alguien me pudiera *)
(* ayudar cn esto se los agradeceria *)
(* demasiado soy nuevo todavia en esto s: *)
(**********************************************)
(* programa realizado por Armando Fuenmayor *)
(* en turbo pascal 7.0 *)
program promedionotas(input,output);
uses crt;
const
max = 3 ;
type
matrizre = record
Nombre : String[20];
nota1 : Integer;
nota2 : Integer;
nota3 : Integer;
promedio : Real ;
end;
A = array[1..max] of matrizre ;
var
i,j , num1 , temnum1, num2, temnum2 , num3, temnum3 : Integer;
tempnom : String[20];
temprome : real ;
xx: A;
(* Function declaration *)
function UpCaseStr(S: string): string;
var
jj: Integer;
begin
for jj := 1 to Length(S) do
if (S[jj] >= 'a') and (S[jj] <= 'z') then
Dec(S[jj], 32);
UpCaseStr := S;
end;
(*********************************)
(* calcula el promedio de notas *)
(*********************************)
function total(n1, n2, n3: integer ): real ;
begin
total := (n1 + n2 + n3) / 3;
end;
(***************)
(* leer datos *)
(***************)
procedure leer;
begin
clrscr;
for i := 1 to max do
begin
gotoxy(10,10);
writeln('Ingrese el N§', i ,' Nombre:') ;
gotoxy(32,10);
readln(xx[i].Nombre) ;
clreol;
gotoxy(10,12);
writeln('Ingrese la ', i ,' nota1 :') ;
gotoxy(32,12);
readln(xx[i].nota1) ;
clreol;
gotoxy(10,14);
writeln('Ingrese la ', i ,' nota2 :') ;
gotoxy(32,14);
readln(xx[i].nota2) ;
gotoxy(10,16);
writeln('Ingrese la ', i ,' nota3 :') ;
gotoxy(32,16);
readln(xx[i].nota3) ;
num1 := 0 ;
num2 := 0 ;
num3 := 0 ;
num1 := xx[i].nota1 ;
num2 := xx[i].nota2 ;
num3 := xx[i].nota3 ;
xx[i].promedio := total(num1,num2,num3) ;
gotoxy(32,10);
writeln(' ') ;
gotoxy(32,12);
writeln(' ') ;
gotoxy(30,14);
writeln(' ') ;
gotoxy(30,16);
writeln(' ') ;
clreol;
end;
end;
(* metodo de ordenamiento *********)
procedure burbuja;
begin
for i:= 1 to max do
for j:= i+1 to max-1 do
if (xx[i].nota1 < xx[j].nota1 ) then
begin
tempnom := xx[i].nombre ;
temnum1 := xx[i].nota1 ;
temnum2 := xx[i].nota2 ;
temnum3 := xx[i].nota3 ;
temprome := xx[i].promedio ;
xx[i].nombre := xx[j].nombre;
xx[i].nota1 := xx[j].nota1;
xx[i].nota2 := xx[j].nota2;
xx[i].nota3 := xx[j].nota3;
xx[i].promedio := xx[j].promedio;
xx[j].nombre := tempnom;
xx[j].nota1 := temnum1;
xx[j].nota2 := temnum2;
xx[j].nota3 := temnum3;
xx[j].promedio := temprome;
end;
end;
(**********************)
(* Muestra el arreglo *)
(**********************)
procedure mostrar;
begin
clrscr;
gotoxy(3, 6);
write('ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');
gotoxy(3, 7);
write('º NOMBRE ³NOTA 1³NOTA 2³NOTA 3³PROMEDIO º');
gotoxy(3, 8);
write('ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍͼ');
for i := 1 to max do
begin
gotoxy(3,9+i);
write(UpCaseStr(xx[i].Nombre));
gotoxy(26,9+i);
write(xx[i].nota1) ;
gotoxy(33,9+i);
write(xx[i].nota2) ;
gotoxy(40,9+i);
write(xx[i].nota3) ;
gotoxy(47,9+i);
write(xx[i].promedio:2:2) ;
end;
end;
(**********************)
(* programa principal *)
(**********************)
begin
leer;
burbuja;
mostrar;
readln;
end.