Vectores

Estructura de datos. Arrays

  • Enviado por: Eduardo Donderis
  • Idioma: castellano
  • País: España España
  • 3 páginas
publicidad
publicidad

12.9.- En un vector TERMINOS de N elementos de tipo entero se han almacenado , desordenados, los datos relativos al numero de veces que los N caballos de una cuadra han conseguido algún premio en las carreras. Los caballos los referencian, de 1 hasta N, los subindices del vector y los premios, los datos contenidos en el vector. En otro vector NOMBRES se encuentran los N nombres de los caballos de esa cuadra, de manera que el primer nombre corresponde al primer dato del vector PREMIOS, y asi sucesivamente. Se quiere, partiendo de los datos de ambos vectores (PREMIOS y NOMBRES) llenar una tabla de N x 2 elementor con los nombres de los caballos (en la primera columna) y el numero de veces que han conseguido premio (en la segunda columna) ordenados de mayor a menor por filas, según el numero de premios conseguidos. En caso de igualdad de puntos, el criterio de ordenación para esos caballos será su nombre y la ordenación de ese grupo será ascendente.

Program CABALLOS;

uses crt;

const

n=5;

type

tarray=array [1..n] of string;

tarray1=array [1..n] of integer;

ttabla=array [1..n,1..2] of string;

var

nombres:tarray;

premios:tarray1;

tabla:ttabla;

{este procedimiento lee los terminos y sus definiciones}

procedure leerdefiniciones (var n:tarray; p:tarray1);

var

i:integer;

ch:char;

begin

i:=0;

repeat

clrscr;

i:=i+1;

write ('Introduzca el nombre: '); readln (n[i]);

write ('Introduzca la premios: '); readln (p[i]);

write ('¨Mas caballos (S/N)?');

ch:=upcase (readkey);

until (ch='N') or (i=10)

end;

{este procedimiento pasa los valores de los vectores a la tabla}

procedure transpasartabla (n:tarray; p:tarray1; var t1:ttabla);

var

i:integer;

begin

for i:=1 to 10 do

begin

t1[i,1]:=n[i];

t1[i,2]:=p[i]

end

end;

{********************************************************}

{este procedimiento ordena la tabla alfab ticamente de menor a mayor}

procedure ordenartabla ( var t:ttabla);

var

i,j:integer;

enco:boolean;

aux,aux1:string;

begin

for i:=2 to n do

begin

aux:=t[i,1];

aux1:=t[i,2];

enco:=false;

j:=i-1;

while (enco=false) and (j>0) do

begin

if (t[j,1]>aux) then

begin

t[j+1,1]:=t[j,1];

t[j+1,2]:=t[j,2];

j:=j-1

end

else

enco:=true

end;

t[j+1,1]:=aux;

t[j+1,2]:=aux1

end

end;

{Este procedimiento visualiza la tabla}

procedure visualizar ( t:ttabla);

var

i,j:integer;

begin

clrscr;

for i:=1 to n do

begin

write (t[i,1],' ',t[i,2])

end;

readkey

end;

{**************************************}

{PROGRAMA PRINCIPAL}

begin

clrscr;

leerdefiniciones (nombrea,premios);

transpasartabla (nombres,premios,tabla);

ordenartabla (tabla);

visualizar (tabla)

end.