Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct
- {
- char nome[20];
- int idade;
- float altura;
- float peso;
- }imc;
- void inicializa(imc *ptr);
- void opcao(imc *ptr);
- void lerBin(imc *ptr);
- void insereDados(imc *ptr);
- int procuraFim(imc *ptr);
- void pesquisaDados(imc *ptr);
- void pesquisa40(imc *ptr);
- void calculaIMC(imc *ptr);
- int main()
- {
- imc *i;
- i = malloc(20*sizeof(imc));
- inicializa(i);
- opcao(i);
- free(i);
- return 0;
- }
- void inicializa(imc *ptr)
- {
- int i;
- for(i=0;i<20;i++)
- {
- (ptr+i)->nome[0]='\0';
- (ptr+i)->idade=0;
- (ptr+i)->altura=0.0;
- (ptr+i)->peso=0.0;
- }
- }
- void opcao(imc *ptr)
- {
- char op;
- do{
- printf("a. Cadastrar Registros\n");
- printf("b. Apresentar todos os Registros\n");
- printf("c. Apresentar pessoas com idade superior a 40 anos\n");
- printf("d. Apresentar as pessoas com IMC acima do peso\n");
- printf("e. Apresentar as pessoas com altura superior a 1,5m\n");
- printf("f. Sair\n");
- setbuf(stdin,NULL);
- op = getch();
- system("cls");
- if(op=='a'){insereDados(ptr);system("PAUSE");}
- if(op=='b'){pesquisaDados(ptr);system("PAUSE");}
- if(op=='c'){pesquisa40(ptr);system("PAUSE");}
- if(op=='d'){calculaIMC(ptr);system("PAUSE");}
- system("cls");
- }while(op!='f');
- }
- void lerBin(imc *ptr)
- {
- FILE *fp;
- fp = fopen("agenda.bin","rb");
- if(fp==NULL)
- {
- printf("O arquivo nao existe\n");
- exit(1);
- }
- int i=0;
- while(!feof(fp))
- {
- fread(&ptr[i],sizeof(imc),1,fp);
- i++;
- }
- }
- void insereDados(imc *ptr)
- {
- FILE *fp;
- fp = fopen("agenda.bin","wb");
- int i=0,temp;
- char op;
- while(1)
- {
- setbuf(stdin,NULL);
- printf("Informe o nome: ");
- gets((ptr+i)->nome);
- setbuf(stdin,NULL);
- printf("Informe a idade: ");
- scanf("%d", &(ptr+i)->idade);
- printf("Informe a altura: ");
- scanf("%f", &(ptr+i)->altura);
- printf("Informe o peso: ");
- scanf("%f", &(ptr+i)->peso);
- system("cls");
- setbuf(stdin,NULL);
- printf("Deseja inserir mais dados? <s/n>\n");
- scanf("%c", &op);
- if(op=='n') break;
- else i++;
- }
- temp = i+1;
- for(i=0;i<temp;i++)
- {
- fwrite(&ptr[i],sizeof(imc),1,fp);
- }
- fclose(fp);
- }
- int procuraFim(imc *ptr)
- {
- int i;
- for(i=0;i<20;i++)
- {
- if((ptr+i)->nome[0]=='\0')
- return i;
- }
- }
- void pesquisaDados(imc *ptr)
- {
- lerBin(ptr);
- int i,max;
- int a=0;
- max = procuraFim(ptr);
- for(i=0;i<max;i++)
- {
- printf("========== Cadastro %d ==========\n", i+1);
- printf("Nome: %s\n", (ptr+i)->nome);
- printf("Idade: %d\n", (ptr+i)->idade);
- printf("Altura: %.2f\n", (ptr+i)->altura);
- printf("Peso: %.2f\n\n", (ptr+i)->peso);
- a=1;
- }
- if(a==0)
- {
- printf("Nao ha dados gravados\n");
- }
- }
- void pesquisa40(imc *ptr)
- {
- lerBin(ptr);
- int i,max,a=0;
- max = procuraFim(ptr);
- for(i=0;i<max;i++)
- {
- if((ptr+i)->idade>40)
- {
- printf("========== Cadastro %d ==========\n", i+1);
- printf("Nome: %s\n", (ptr+i)->nome);
- printf("Idade: %d\n", (ptr+i)->idade);
- printf("Altura: %.2f\n", (ptr+i)->altura);
- printf("Peso: %.2f\n\n", (ptr+i)->peso);
- a=1;
- }
- }
- if(a=0)
- {
- printf("Nao ha pessoas maiores de 40 anos\n");
- }
- }
- void calculaIMC(imc *ptr)
- {
- lerBin(ptr);
- int i=0;
- int max = procuraFim(ptr);
- float calIMC[max];
- for(i=0;i<max;i++)
- {
- calIMC[i] = (ptr+i)->peso/((ptr+i)->altura*(ptr+i)->altura);
- printf("A pessoas %d esta com imc: %f", i+1, calIMC[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement