Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #pragma pack(1)
- /*Então, um programa utilizou este tipo para armazenar algumas informações em um
- arquivo no modo binário. Este arquivo possui como primeira informação, um inteiro n
- contendo a quantidade de dados do tipo Record. Na sequencia, todos os n dados Record.
- Implementar um programa que leia estes dados e exiba:
- a. A soma de todos os pesos;
- b. A maior das idades.
- c. A menor idade encontrada;
- d. A quantidade de pessoas dos sexos masculino e feminino.*/
- typedef struct {
- int id;
- short age;
- float height;
- float weight;
- char gender;
- } Record;
- int main(void) {
- FILE *bd;
- if((bd=fopen("records.dat", "rb")) == NULL) {
- printf("Erro ao abrir o arquivo.\n");
- exit(1);
- }
- conta_registros(bd);
- mostra_registros(bd);
- soma_pesos(bd);
- maior_idade(bd);
- menor_altura(bd);
- pessoas_por_sexo(bd);
- fclose(bd);
- return 0;
- }
- conta_registros(FILE *bd){
- int n;
- Record registro;
- fseek(bd,0,SEEK_SET);
- fread(&n, sizeof(int),1,bd);
- fseek(bd,sizeof(int),SEEK_SET);
- return n;
- }
- mostra_registros(FILE *bd){
- int n,i;
- Record registro;
- n=conta_registros(bd);
- printf("\n\nQuantidade de registros encontrados: %d \n\n",n);
- for(i=0 ; i<n;i++) {
- fread(®istro, sizeof(Record), 1, bd);
- if (feof(bd)) break;
- // mostra dados
- printf ("|-----------------------------|\n");
- printf ("| Identificador: %d |\n",registro.id);
- printf ("| Idade: %d Anos |\n",registro.age);
- printf ("| Peso: %.2f Kg |\n",registro.height);
- printf ("| Altura: %.2f M |\n",registro.weight);
- printf ("| Sexo: %c |\n",registro.gender);
- printf ("|-----------------------------|\n\n");
- }
- }
- soma_pesos(FILE *bd){
- int n,i;
- float soma=0;
- Record registro;
- n=conta_registros(bd);
- for(i=0 ; i<n;i++) {
- fread(®istro, sizeof(Record), 1, bd);
- if (feof(bd)) break;
- soma = soma + registro.height;
- }
- printf("Soma dos pesos = %.2f Kg\n\n", soma);
- }
- maior_idade(FILE *bd){
- int n,i,maior_idade=0, id_idade=0;
- Record registro;
- n=conta_registros(bd);
- for(i=0 ; i<n;i++) {
- fread(®istro, sizeof(Record), 1, bd);
- if (feof(bd)) break;
- if (maior_idade<registro.age) {maior_idade=registro.age; id_idade=registro.id ;}
- }
- printf("Maior Idade = %d Anos\n\nId maior Idade = %d \n\n", maior_idade , id_idade );
- }
- menor_altura(FILE *bd){
- int n,i;
- float menor_altura=9999;
- Record registro;
- n=conta_registros(bd);
- for(i=0 ; i<n;i++) {
- fread(®istro, sizeof(Record), 1, bd);
- if (feof(bd)) break;
- if (menor_altura>registro.weight) menor_altura=registro.weight;
- }
- printf("Menor Altura = %.2f Metros\n\n", menor_altura );
- }
- pessoas_por_sexo(FILE *bd){
- int n,i,masculino=0,feminino=0;
- Record registro;
- n=conta_registros(bd);
- for(i=0 ; i<n;i++) {
- fread(®istro, sizeof(Record), 1, bd);
- if (feof(bd)) break;
- if (registro.gender=='F') feminino++;
- if (registro.gender=='M') masculino++;
- }
- printf("Masculino = %d homi\n\n", masculino );
- printf("Feminino = %d muieh\n\n", feminino );
- }
Advertisement
Add Comment
Please, Sign In to add comment