Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ejercicio6;
- type
- objeto=record
- codigo:integer;
- categoria:1..7;
- nombre:String;
- distanciaT:real;
- descubridor:String;
- año:integer;
- end;
- lista=^nodo;
- nodo=record
- dato:objeto;
- sig:lista;
- end;
- vectorObjetos=array [1..7] of integer;
- var
- l:lista;
- vo:vectorObjetos;
- cant:integer;
- begin
- l:=nil;
- cargarObjeto(l);
- inicializar(vo);
- recorrer(l,cant,vo);
- informar(vo);
- writeln ('Cantidad de Planetas descubiertos por Galileo Galilei: ',cant);
- end;
- procedure cargarObjeto(var l:lista);
- var
- o:objeto;
- begin
- leer(o);
- while (o.codigo <> -1) do begin
- agregar(l,o);
- leer(o);
- end;
- end;
- procedure leer(var o:objeto);
- begin
- readln(o.codigo);
- if(o.codigo <> -1)then begin
- readln(o.categoria);
- readln(o.nombre);
- readln(o.distanciaT);
- readln(o.descubridor);
- readln(o.año);
- end;
- end;
- procedure agregar (var l:lista; o:objeto);
- var
- nue,ult:lista;
- begin
- new(nue);
- nue^.dato:=o;
- nue^.sig:=nil;
- if(l=nil) then
- l:=nue;
- ult:=nue;
- else
- ult^.sig:=nue;
- ult:=nue;
- end;
- end;
- procedure inicializar(var vo:vectorObjetos);
- var
- i:integer;
- begin
- for i:= 1 to 7 do
- vo[i]:=0;
- end;
- procedure recorrer(l:lista; var cant:integer; var vo:vectorObjetos);
- var
- max,max2:real;
- cMax,cMax2:integer;
- begin
- cant:=0;
- max,max2:=-1;
- while (l <> nil) do begin
- vo[l^.dato.categoria]:= vo[l^.dato.categoria] + 1;
- if(l^.dato.categoria = '7') then begin
- if(digitosPares(l^.dato.codigo)) then
- writeln('La Estrella: ',l^.dato.nombre,' con codigo ',l^.dato.codigo,'tiene
- mas digitos pares que impares');
- end;
- if(l^.dato.descubridor = 'Galileo Galilei') then
- cant:=cant+1;
- masLejanos(max,max2,cMax,cMax2,l^.dato.distanciaT,l^.dato.codigo);
- l:=l^.sig;
- end;
- writeln('Los códigos de los dos objetos mas lejanos de la tierra son: ',cMax,'y ',cMax2);
- end;
- procedure masLejanos (var max,max2:real; var cMax,cMax2:integer; dist:real; codigo:integer);
- begin
- if(dist > max) then begin
- max:=dist;
- cMax:=codigo;
- end;
- else if (dist > max2) then begin
- max2:=dist;
- cMax2:=codigo;
- end;
- end;
- function digitosPares(codigo:integer):boolean;
- var
- par,impar,dig:integer;
- ok:boolean;
- begin
- ok:=true;
- par,impar:=0;
- while(codigo <> 0) do begin
- dig:= codigo mod 10
- if(dig mod 2 = 0) then
- par:=par+1;
- else
- impar:= impar + 1;
- codigo:=codigo div 10;
- end;
- if (impar > par) then
- ok:=false;
- digitosPares:=ok;
- end;
- procedure informar (vo:vectorObjetos);
- var
- i:integer;
- begin
- for i:= 1 to 7 do begin
- writeln('Cantidad de Objetos observados en la categoria ',i,': ',vo[i]);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement