fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct funcionario Funcionario;
  6.  
  7. struct funcionario{
  8. char nome[81];
  9. float valor_hora;
  10. int horas_mes;
  11. };
  12.  
  13. static int comp(char *a, Funcionario* b){
  14. return strcmp(a,b->nome);
  15. }
  16.  
  17. Funcionario* busca(int n, Funcionario** v, char* nome){
  18. int ini, fim, meio, cmp;
  19. ini = 0;
  20. fim = n - 1;
  21. while(ini <= fim){
  22. meio = (ini + fim) / 2;
  23. cmp = comp(nome,v[meio]);
  24. if(cmp < 0)
  25. fim = meio - 1;
  26. else if(cmp > 0)
  27. ini = meio + 1;
  28. else
  29. return v[meio];
  30.  
  31. }
  32. return NULL;
  33. }
  34.  
  35. int main(){
  36. int i, n;
  37. char name[85];
  38. scanf("%d", &n);
  39. Funcionario *a[n];
  40. for(i = 0; i < n; i++){
  41. Funcionario* vet = malloc(sizeof(Funcionario));
  42. a[i] = vet;
  43. scanf("%s", vet->nome);
  44. scanf("%d", &vet->horas_mes);
  45. scanf("%f", &vet->valor_hora);
  46. }
  47. scanf("%s", name);
  48. Funcionario* resp = busca(n,a,name);
  49. printf("%s\n", resp->nome);
  50. printf("%d %.1f\n", resp->horas_mes, resp->valor_hora);
  51. }
Success #stdin #stdout 0s 4588KB
stdin
3
ana
10
11
joao
12
13
serafim
14
15
ana
stdout
ana
10 11.0