Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct suspeito{
  4. int codigo;
  5. int instante;
  6. int graulatitude;
  7. int minutolatitude;
  8. int segundolatitude;
  9. int graulongitude;
  10. int minutolongitude;
  11. int segundolongitude;
  12. };
  13. struct suspeito informacao[10000];
  14. int PesquisaBinaria(int n, struct suspeito informacao[], int i, int j)
  15. {
  16. if (i > j)
  17. return -1; // o intervalo i..j é vazio
  18.  
  19. int m = (i + j) / 2; // ponto médio do intervalo
  20.  
  21. if (n < informacao[m].codigo)
  22. // restringe a pesquisa ao intervalo i..m - 1
  23. return PesquisaBinaria(n, informacao, i, m - 1);
  24.  
  25. if (n > informacao[m].codigo)
  26. // restringe a pesquisa ao intervalo m + 1..j
  27. return PesquisaBinaria(n, informacao, m + 1, j);
  28.  
  29. // n == v[m]
  30. return m;
  31. }
  32. int compare(const void *p1, const void *p2)
  33. {
  34. const struct informacoes *elem1 = (struct informacoes *)p1;
  35. const struct informacoes *elem2 = (struct informacoes *)p2;
  36. if (elem1->codigo < elem2->codigo)
  37. return -1;
  38. else if (elem1->codigo > elem2->codigo)
  39. return 1;
  40. else
  41. return 0;
  42. }
  43. int main()
  44. {
  45.  
  46. int codigo,instante,graulatitude,minutolatitude,segundolatitude,graulongitude,minutolongitude,segundolongitude;
  47. int count,par1,par2;
  48. while(scanf(" %d",&codigo)!=EOF) {
  49. if(codigo!=00000){
  50. scanf("%d %d %d\' %d\" %d %d\' %d\"",&instante,&graulatitude,&minutolatitude,&segundolatitude,&graulongitude,&minutolongitude,&segundolongitude);
  51. informacao[count].codigo=codigo;
  52. informacao[count].instante=instante;
  53. informacao[count].graulatitude=graulatitude;
  54. informacao[count].minutolatitude=minutolatitude;
  55. informacao[count].segundolatitude=segundolatitude;
  56. informacao[count].graulongitude=graulongitude;
  57. informacao[count].minutolongitude=minutolongitude;
  58. informacao[count].segundolongitude=segundolongitude;
  59. count++;
  60.  
  61. }
  62. qsort(informacao,count,sizeof(informacao),compare);
  63. if(codigo==00000) {
  64. scanf("%d %d",&par1,&par2);
  65. int find1=PesquisaBinaria(par1,informacao,0,count);
  66. int find2=PesquisaBinaria(par2,informacao,0,count);
  67. if(find1==-1 && find2!=-1)
  68. printf("+ sem dados sobre o suspeito %d",par1);
  69.  
  70. else if(find1!=-1 && find2==-1)
  71. printf("+ sem dados sobre o suspeito %d",par2);
  72. else if(find1==-1 && find2==-1) {
  73. if(informacao[find1].codigo==informacao[find2].codigo && informacao[find1].instante==informacao[find2].instante && informacao[find1].graulatitude == informacao[find2].graulatitude && informacao[find1].minutolatitude==informacao[find2].minutolatitude && informacao[find1].segundolatitude == informacao[find2].segundolatitude && informacao[find1].graulongitude==informacao[find2].graulongitude && informacao[find1].minutolongitude==informacao[find2].minutolongitude && informacao[find1].segundolatitude==informacao[find2].segundolatitude) {
  74. printf("+ %05d e %05d podem ter-se encontrado em:",par1,par2);
  75.  
  76. }
  77. }
  78. else {
  79. break;
  80. }
  81. }
  82. printf("%d\n",informacao[1].instante);
  83.  
  84.  
  85.  
  86.  
  87. return 0;
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement