Advertisement
Guest User

Programa em C

a guest
Jun 27th, 2014
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6. char nome[20];
  7. int idade;
  8. float altura;
  9. float peso;
  10. }imc;
  11.  
  12.  
  13.  
  14. void inicializa(imc *ptr);
  15. void opcao(imc *ptr);
  16. void lerBin(imc *ptr);
  17. void insereDados(imc *ptr);
  18. int procuraFim(imc *ptr);
  19. void pesquisaDados(imc *ptr);
  20. void pesquisa40(imc *ptr);
  21. void calculaIMC(imc *ptr);
  22.  
  23.  
  24. int main()
  25. {
  26. imc *i;
  27. i = malloc(20*sizeof(imc));
  28. inicializa(i);
  29. opcao(i);
  30. free(i);
  31. return 0;
  32. }
  33.  
  34.  
  35. void inicializa(imc *ptr)
  36. {
  37. int i;
  38. for(i=0;i<20;i++)
  39. {
  40. (ptr+i)->nome[0]='\0';
  41. (ptr+i)->idade=0;
  42. (ptr+i)->altura=0.0;
  43. (ptr+i)->peso=0.0;
  44. }
  45. }
  46.  
  47.  
  48.  
  49.  
  50. void opcao(imc *ptr)
  51. {
  52. char op;
  53. do{
  54. printf("a. Cadastrar Registros\n");
  55. printf("b. Apresentar todos os Registros\n");
  56. printf("c. Apresentar pessoas com idade superior a 40 anos\n");
  57. printf("d. Apresentar as pessoas com IMC acima do peso\n");
  58. printf("e. Apresentar as pessoas com altura superior a 1,5m\n");
  59. printf("f. Sair\n");
  60. setbuf(stdin,NULL);
  61. op = getch();
  62. system("cls");
  63. if(op=='a'){insereDados(ptr);system("PAUSE");}
  64. if(op=='b'){pesquisaDados(ptr);system("PAUSE");}
  65. if(op=='c'){pesquisa40(ptr);system("PAUSE");}
  66. if(op=='d'){calculaIMC(ptr);system("PAUSE");}
  67. system("cls");
  68. }while(op!='f');
  69. }
  70.  
  71.  
  72.  
  73. void lerBin(imc *ptr)
  74. {
  75. FILE *fp;
  76. fp = fopen("agenda.bin","rb");
  77.  
  78. if(fp==NULL)
  79. {
  80. printf("O arquivo nao existe\n");
  81. exit(1);
  82. }
  83.  
  84. int i=0;
  85. while(!feof(fp))
  86. {
  87. fread(&ptr[i],sizeof(imc),1,fp);
  88. i++;
  89. }
  90. }
  91.  
  92.  
  93. void insereDados(imc *ptr)
  94. {
  95. FILE *fp;
  96. fp = fopen("agenda.bin","wb");
  97. int i=0,temp;
  98. char op;
  99. while(1)
  100. {
  101. setbuf(stdin,NULL);
  102. printf("Informe o nome: ");
  103. gets((ptr+i)->nome);
  104. setbuf(stdin,NULL);
  105. printf("Informe a idade: ");
  106. scanf("%d", &(ptr+i)->idade);
  107. printf("Informe a altura: ");
  108. scanf("%f", &(ptr+i)->altura);
  109. printf("Informe o peso: ");
  110. scanf("%f", &(ptr+i)->peso);
  111. system("cls");
  112. setbuf(stdin,NULL);
  113. printf("Deseja inserir mais dados? <s/n>\n");
  114. scanf("%c", &op);
  115. if(op=='n') break;
  116. else i++;
  117.  
  118. }
  119.  
  120. temp = i+1;
  121. for(i=0;i<temp;i++)
  122. {
  123. fwrite(&ptr[i],sizeof(imc),1,fp);
  124. }
  125.  
  126. fclose(fp);
  127. }
  128.  
  129.  
  130. int procuraFim(imc *ptr)
  131. {
  132. int i;
  133. for(i=0;i<20;i++)
  134. {
  135. if((ptr+i)->nome[0]=='\0')
  136. return i;
  137. }
  138. }
  139.  
  140.  
  141.  
  142. void pesquisaDados(imc *ptr)
  143. {
  144. lerBin(ptr);
  145.  
  146. int i,max;
  147. int a=0;
  148. max = procuraFim(ptr);
  149.  
  150. for(i=0;i<max;i++)
  151. {
  152. printf("========== Cadastro %d ==========\n", i+1);
  153. printf("Nome: %s\n", (ptr+i)->nome);
  154. printf("Idade: %d\n", (ptr+i)->idade);
  155. printf("Altura: %.2f\n", (ptr+i)->altura);
  156. printf("Peso: %.2f\n\n", (ptr+i)->peso);
  157. a=1;
  158. }
  159. if(a==0)
  160. {
  161. printf("Nao ha dados gravados\n");
  162. }
  163.  
  164. }
  165.  
  166.  
  167.  
  168.  
  169. void pesquisa40(imc *ptr)
  170. {
  171. lerBin(ptr);
  172.  
  173. int i,max,a=0;
  174. max = procuraFim(ptr);
  175.  
  176. for(i=0;i<max;i++)
  177. {
  178. if((ptr+i)->idade>40)
  179. {
  180. printf("========== Cadastro %d ==========\n", i+1);
  181. printf("Nome: %s\n", (ptr+i)->nome);
  182. printf("Idade: %d\n", (ptr+i)->idade);
  183. printf("Altura: %.2f\n", (ptr+i)->altura);
  184. printf("Peso: %.2f\n\n", (ptr+i)->peso);
  185. a=1;
  186. }
  187.  
  188.  
  189. }
  190.  
  191. if(a=0)
  192. {
  193. printf("Nao ha pessoas maiores de 40 anos\n");
  194. }
  195.  
  196. }
  197.  
  198.  
  199. void calculaIMC(imc *ptr)
  200. {
  201.  
  202. lerBin(ptr);
  203. int i=0;
  204. int max = procuraFim(ptr);
  205. float calIMC[max];
  206.  
  207. for(i=0;i<max;i++)
  208. {
  209.  
  210. calIMC[i] = (ptr+i)->peso/((ptr+i)->altura*(ptr+i)->altura);
  211. printf("A pessoas %d esta com imc: %f", i+1, calIMC[i]);
  212. }
  213.  
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement