Ordenar lista
Publicado por Mateo (6 intervenciones) el 21/11/2015 20:15:47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
type
RangoCodigo = 1..LARGO_CODIGO;
RangoBR = 0 .. LARGO_CODIGO;
TipoCodigo = array [RangoCodigo] of char;
TRegistroNota = record
codigo : TipoCodigo;
buenos,
regulares: RangoBR;
end;
THistoria = record
info : array [1..MAXIMO_INTENTOS] of TRegistroNota;
tope : 0..MAXIMO_INTENTOS;
end;
ListaNotas = ^CeldaNota;
CeldaNota = record
codigo : TipoCodigo;
buenos ,
regulares : RangoBR;
turno : 1 .. MAXIMO_INTENTOS;
siguiente : ListaNotas;
end;
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
function ListaOrdenada(historia : THistoria) : ListaNotas;
function InsertarElemento(historia: THistoria; r: ListaNotas; var i: integer): ListaNotas;
var
p,q : ListaNotas;
j,limite : integer;
begin
InsertarElemento:=r;
new(p);
limite:=historia.tope;
for j:=1 to limite do
p^.codigo:=historia.info[i].codigo;
p^.buenos:=historia.info[i].buenos;
p^.regulares:=historia.info[i].regulares;
p^.turno:=i;
p^.siguiente:=nil;
inc(i);
if r = nil then
r:= p
else
begin
q:= r;
while q^.siguiente <> nil do
q:= q^.siguiente;
q^.siguiente:= p;
end;
end;
var
lista : ListaNotas;
i,k,limite : integer;
begin
{ aproximacion:= 10 * (buenos + regulares); }
limite:=historia.tope;
new(lista);
if limite = 0 then {lista vacia}
lista := nil;
k:=1;
for i:=1 to limite do
InsertarElemento(historia,lista,k);
inc(k);
ListaOrdenada:=lista;
end;
no logro tener una idea para ordenar la lista y quede quede asi
(lista vacia)Impresion de historia
---------------------
FBCD--> buenos : 2 regulares : 0
CDBB--> buenos : 1 regulares : 1
DEBE--> buenos : 2 regulares : 1
DCEC--> buenos : 2 regulares : 1
EEAB--> buenos : 0 regulares : 3
-*-*-*-*-*-*-*-*-*-*-
Imprimir lista
--------------
EEAB --> Bs = 0, Rs = 3 ( turno: 5)
CDBB --> Bs = 1, Rs = 1 ( turno: 2)
FBCD --> Bs = 2, Rs = 0 ( turno: 1)
DEBE --> Bs = 2, Rs = 1 ( turno: 3)
DCEC --> Bs = 2, Rs = 1 ( turno: 4)
gracias
Valora esta pregunta


0