Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define N 10
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct bio {
- int idade;
- float peso;
- float altura;
- };
- typedef struct bio Bio;
- // qnd se tratar d strings ...
- int compara(int valorEncontrado, int valorBuscado) {
- int r = strcmp(valorBuscado ,valorEncontrado);
- if (r == 0) {
- return 0;
- }
- return r;
- }
- int buscaIdade(int n, Bio** v, int idade, int* prim, int* ult) {
- int ini, fim, meio, i;
- ini = 0;
- fim = n - 1;
- while (ini <= fim) {
- meio = (fim + ini) / 2;
- if (v[meio]->idade < idade) {
- ini = meio + 1;
- }
- else if (v[meio]->idade > idade) {
- fim = meio - 1;
- }
- else {
- printf("%d IDADE ENCONTRADA \n", v[meio]->idade);
- for (i = meio; i >= 0 && v[i]->idade == idade; i--);
- *prim = i+1;
- for (i = meio; i < n && v[i]->idade == idade; i++);
- *ult = i-1;
- return 1;
- }
- }
- return -1;
- }
- /*
- int buscaBin(int n,Bio** v, int idade ) {
- int r, meio;
- if (v < 1){
- return -1;
- }
- // direcionar para frente e tras
- meio = n / 2;
- r = compara(meio, idade);
- if (r == 1) {
- buscaBin(meio, v , idade);
- }
- else if (r ==-1) {
- buscaBin(n-meio, &v[meio+1], idade);
- }
- // achou
- else { // agora procura para tras e para frente. vamos sinalizar com printf
- busca(idade)
- if()// se o de tras e dif
- // printa
- }
- }*/
- int main() {
- Bio d []= { {18, 60, 2.00},{18, 65, 2.00},{18,60, 1.90}, {20,65,1.80},{20,40,1.70},
- {20,30,1.60},{20,40,1.55},{25,50,1.70},{30,40,1.70},{30,45,1.85} };
- Bio* v []= { d, d+1, d+2, d+3, d+4, d+5, d+6, d+7, d+8, d+9 };
- int prim, ult;
- //18
- buscaIdade(N, v, 18, &prim, &ult);
- printf("18: %d primeiro e o ult e o %d\n\n", prim, ult);
- //20
- buscaIdade(N, v, 20, &prim, &ult);
- printf("20: %d primeiro e o ult e o %d\n\n", prim, ult);
- //25
- buscaIdade(N, v, 25, &prim, &ult);
- printf("25: %d primeiro e o ult e o %d\n\n", prim, ult);
- //30
- buscaIdade(N, v, 30, &prim, &ult);
- printf("30: %d primeiro e o ult e o %d\n\n", prim, ult);
- return 0;
- }
Add Comment
Please, Sign In to add comment