Guest User

Untitled

a guest
Apr 22nd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. #define Q_BATALHOES 50
  6. #define Q_INCIDENTES 1000
  7. typedef struct {
  8. int x;
  9. int y;
  10. } coord;
  11.  
  12. typedef struct {
  13. coord local;
  14. float raio;
  15. int capac;
  16. } batalhao;
  17.  
  18. typedef struct {
  19. coord local;
  20. } incidente;
  21.  
  22. batalhao lista_de_batalhoes[Q_BATALHOES];
  23. incidente lista_de_incidentes[Q_INCIDENTES];
  24.  
  25. void questao01(char *arqbat, char *arqinci, int *qbat, int *qinci)
  26. {
  27. char *token,line[32];
  28. FILE *a_bat;
  29. a_bat = fopen(arqbat,"r");
  30. while(fgets(line,32,a_bat))
  31. {
  32. token=strtok(line," ");
  33. lista_de_batalhoes[*qbat].local.x=atoi(token);
  34. token=strtok(0," ");
  35. lista_de_batalhoes[*qbat].local.y=atoi(token);
  36. token=strtok(0," ");
  37. lista_de_batalhoes[*qbat].raio=atof(token);
  38. token=strtok(0,"\n");
  39. lista_de_batalhoes[*qbat].capac=atoi(token);
  40. *qbat++;
  41. }
  42. fclose(a_bat);
  43. FILE *a_inci;
  44. a_inci = fopen(arqinci,"r");
  45. while(fgets(line,32,a_inci))
  46. {
  47. token=strtok(line," ");
  48. lista_de_incidentes[*qinci].local.x=atoi(token);
  49. token=strtok(0,"\n");
  50. lista_de_incidentes[*qinci].local.y=atoi(token);
  51. *qinci++;
  52. }
  53. fclose(a_inci);
  54. }
  55.  
  56. void questao02(char *arq, int qbat, int qinci)
  57. {
  58. int i,j;
  59. float distx,disty,tempo;
  60. FILE *a_saida;
  61. a_saida = fopen(arq,"w");
  62. for(i=0;i<qinci;i++)
  63. {
  64. fprintf(a_saida,"%d: ",i);
  65. for (j=0;j<qbat;j++)
  66. {
  67. distx=abs(lista_de_batalhoes[j].local.x-lista_de_incidentes[i].local.x);
  68. disty=abs(lista_de_batalhoes[j].local.y-lista_de_incidentes[i].local.y);
  69. if (distx+disty<=lista_de_batalhoes[j].raio)
  70. tempo=(distx+disty)*0.5;
  71. else
  72. tempo=-1;
  73. fprintf(a_saida,"%f.1 ",tempo);
  74. if (j==qbat-1)
  75. fprintf(a_saida,"\n");
  76. }
  77. }
  78. fclose(a_saida);
  79. }
  80.  
  81. int main() {
  82. int qtde_bat, qtde_inci;
  83. questao01("batalhoes.txt", "incidentes.txt", &qtde_bat, &qtde_inci);
  84. questao02("saida.txt", qtde_bat, qtde_inci);
  85. return 0;
  86. }
Add Comment
Please, Sign In to add comment