MirandaWopps

buscaFaixa

Jun 10th, 2022 (edited)
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.03 KB | None | 0 0
  1. #define N 10
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. struct bio {
  7.     int idade;
  8.     float peso;
  9.     float altura;
  10. };
  11.  
  12. typedef struct bio Bio;
  13.  
  14. // qnd se tratar d strings ...
  15. int compara(int valorEncontrado, int valorBuscado) {
  16.     int r = strcmp(valorBuscado ,valorEncontrado);
  17.     if (r == 0) {
  18.         return 0;
  19.     }
  20.         return r;
  21. }
  22.  
  23.  
  24.  
  25. int buscaIdade(int n, Bio** v, int idade, int* prim, int* ult) {
  26.     int ini, fim, meio, i;
  27.     ini = 0;
  28.     fim = n - 1;
  29.     while (ini <= fim) {
  30.         meio = (fim + ini) / 2;
  31.         if (v[meio]->idade < idade) {
  32.             ini = meio + 1;
  33.         }
  34.         else if (v[meio]->idade > idade) {
  35.             fim = meio - 1;
  36.         }
  37.         else {
  38.             printf("%d IDADE ENCONTRADA \n", v[meio]->idade);
  39.             for (i = meio; i >= 0 && v[i]->idade == idade; i--);
  40.             *prim = i+1;
  41.  
  42.             for (i = meio; i < n && v[i]->idade == idade; i++);
  43.             *ult = i-1;
  44.             return 1;
  45.         }
  46.  
  47.     }
  48.     return -1;
  49.  
  50.  
  51. }
  52.  
  53.  
  54. /*
  55. int buscaBin(int n,Bio** v, int idade ) {
  56.     int r, meio;
  57.     if (v < 1){
  58.         return -1;
  59.     }
  60.  
  61.     // direcionar para frente e tras
  62.     meio = n / 2;
  63.     r = compara(meio, idade);
  64.     if (r == 1) {
  65.         buscaBin(meio, v , idade);
  66.     }
  67.     else if (r ==-1) {
  68.         buscaBin(n-meio, &v[meio+1], idade);
  69.     }
  70.    
  71.     // achou
  72.     else { // agora procura para tras e para frente. vamos sinalizar com printf
  73.         busca(idade)
  74.        
  75.         if()// se o de tras e dif
  76.             // printa
  77.        
  78.     }
  79.    
  80. }*/
  81.  
  82.  
  83. int main() {
  84.  
  85.     Bio d []= { {18, 60, 2.00},{18, 65, 2.00},{18,60, 1.90}, {20,65,1.80},{20,40,1.70},
  86.         {20,30,1.60},{20,40,1.55},{25,50,1.70},{30,40,1.70},{30,45,1.85}  };
  87.  
  88.     Bio* v []= { d, d+1, d+2, d+3, d+4, d+5, d+6, d+7, d+8, d+9 };
  89.  
  90.     int prim, ult;
  91.    
  92.     //18
  93.     buscaIdade(N, v, 18, &prim, &ult);
  94.     printf("18: %d primeiro e o ult e o %d\n\n", prim, ult);
  95.  
  96.     //20
  97.     buscaIdade(N, v, 20, &prim, &ult);
  98.     printf("20: %d primeiro e o ult e o %d\n\n", prim, ult);
  99.  
  100.     //25
  101.     buscaIdade(N, v, 25, &prim, &ult);
  102.     printf("25: %d primeiro e o ult e o %d\n\n", prim, ult);
  103.  
  104.     //30
  105.     buscaIdade(N, v, 30, &prim, &ult);
  106.     printf("30: %d primeiro e o ult e o %d\n\n", prim, ult);
  107.  
  108.  
  109.     return 0;
  110. }
  111.  
Add Comment
Please, Sign In to add comment