Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. program ejercicio6;
  2. type
  3. objeto=record
  4. codigo:integer;
  5. categoria:1..7;
  6. nombre:String;
  7. distanciaT:real;
  8. descubridor:String;
  9. año:integer;
  10. end;
  11.  
  12. lista=^nodo;
  13. nodo=record
  14. dato:objeto;
  15. sig:lista;
  16. end;
  17.  
  18. vectorObjetos=array [1..7] of integer;
  19. var
  20. l:lista;
  21. vo:vectorObjetos;
  22. cant:integer;
  23. begin
  24. l:=nil;
  25. cargarObjeto(l);
  26. inicializar(vo);
  27. recorrer(l,cant,vo);
  28. informar(vo);
  29. writeln ('Cantidad de Planetas descubiertos por Galileo Galilei: ',cant);
  30. end;
  31.  
  32. procedure cargarObjeto(var l:lista);
  33. var
  34. o:objeto;
  35. begin
  36. leer(o);
  37. while (o.codigo <> -1) do begin
  38. agregar(l,o);
  39. leer(o);
  40. end;
  41. end;
  42.  
  43. procedure leer(var o:objeto);
  44. begin
  45. readln(o.codigo);
  46. if(o.codigo <> -1)then begin
  47. readln(o.categoria);
  48. readln(o.nombre);
  49. readln(o.distanciaT);
  50. readln(o.descubridor);
  51. readln(o.año);
  52. end;
  53. end;
  54.  
  55. procedure agregar (var l:lista; o:objeto);
  56. var
  57. nue,ult:lista;
  58. begin
  59. new(nue);
  60. nue^.dato:=o;
  61. nue^.sig:=nil;
  62. if(l=nil) then
  63. l:=nue;
  64. ult:=nue;
  65. else
  66. ult^.sig:=nue;
  67. ult:=nue;
  68. end;
  69. end;
  70.  
  71. procedure inicializar(var vo:vectorObjetos);
  72. var
  73. i:integer;
  74. begin
  75. for i:= 1 to 7 do
  76. vo[i]:=0;
  77. end;
  78.  
  79. procedure recorrer(l:lista; var cant:integer; var vo:vectorObjetos);
  80. var
  81. max,max2:real;
  82. cMax,cMax2:integer;
  83. begin
  84. cant:=0;
  85. max,max2:=-1;
  86. while (l <> nil) do begin
  87. vo[l^.dato.categoria]:= vo[l^.dato.categoria] + 1;
  88. if(l^.dato.categoria = '7') then begin
  89. if(digitosPares(l^.dato.codigo)) then
  90. writeln('La Estrella: ',l^.dato.nombre,' con codigo ',l^.dato.codigo,'tiene
  91. mas digitos pares que impares');
  92. end;
  93. if(l^.dato.descubridor = 'Galileo Galilei') then
  94. cant:=cant+1;
  95. masLejanos(max,max2,cMax,cMax2,l^.dato.distanciaT,l^.dato.codigo);
  96. l:=l^.sig;
  97. end;
  98. writeln('Los códigos de los dos objetos mas lejanos de la tierra son: ',cMax,'y ',cMax2);
  99. end;
  100.  
  101. procedure masLejanos (var max,max2:real; var cMax,cMax2:integer; dist:real; codigo:integer);
  102. begin
  103. if(dist > max) then begin
  104. max:=dist;
  105. cMax:=codigo;
  106. end;
  107. else if (dist > max2) then begin
  108. max2:=dist;
  109. cMax2:=codigo;
  110. end;
  111. end;
  112.  
  113. function digitosPares(codigo:integer):boolean;
  114. var
  115. par,impar,dig:integer;
  116. ok:boolean;
  117.  
  118. begin
  119. ok:=true;
  120. par,impar:=0;
  121. while(codigo <> 0) do begin
  122. dig:= codigo mod 10
  123. if(dig mod 2 = 0) then
  124. par:=par+1;
  125. else
  126. impar:= impar + 1;
  127. codigo:=codigo div 10;
  128. end;
  129. if (impar > par) then
  130. ok:=false;
  131. digitosPares:=ok;
  132. end;
  133.  
  134. procedure informar (vo:vectorObjetos);
  135. var
  136. i:integer;
  137. begin
  138. for i:= 1 to 7 do begin
  139. writeln('Cantidad de Objetos observados en la categoria ',i,': ',vo[i]);
  140. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement