Created
October 31, 2015 20:03
-
-
Save matheusleite/9f0c160ae9231e998751 to your computer and use it in GitHub Desktop.
Código exemplo de manipulação de arquivos em C
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MATRICULA FAIXA ETARIA SEXO IMC CONDICAO | |
1 Jovem M 35.787754 Obeso | |
2 Adulto M 43.915264 Obeso | |
3 Jovem F 38.164780 Obeso | |
4 Jovem M 26.785103 Marginalmente acima do Peso | |
5 Jovem F 17.415363 Abaixo do Peso | |
6 Jovem F 21.419756 Peso Normal | |
7 Jovem F 38.746044 Obeso | |
8 Jovem M 14.396194 Abaixo do Peso | |
9 Jovem F 13.991672 Abaixo do Peso | |
10 Adolescente F 45.166485 Obeso | |
11 Adolescente M 32.388355 Obeso | |
12 Jovem M 64.051170 Obeso | |
13 Jovem F 28.045235 Acima do peso ideal | |
14 Adolescente M 19.474377 Abaixo do Peso | |
15 Jovem F 46.334690 Obeso | |
16 Adolescente F 50.280960 Obeso | |
17 Jovem F 24.761908 Peso Normal | |
18 Jovem M 30.176006 Acima do peso ideal | |
19 Adulto M 15.801606 Abaixo do Peso | |
20 Adulto F 44.283195 Obeso | |
21 Adulto M 26.861773 Marginalmente acima do Peso | |
22 Adulto F 32.979919 Obeso | |
23 Adulto F 32.005550 Acima do peso ideal | |
24 Adulto M 18.497143 Abaixo do Peso | |
25 Adulto F 39.262722 Obeso | |
26 Adulto M 26.689346 Marginalmente acima do Peso | |
27 Adulto F 41.210545 Obeso | |
28 Adulto F 56.269466 Obeso | |
29 Idoso M 37.133469 Obeso | |
30 Idoso F 41.995827 Obeso | |
31 Adulto M 51.066021 Obeso | |
32 Adulto F 30.278599 Acima do peso ideal | |
33 Idoso M 10.618685 Abaixo do Peso | |
34 Idoso F 13.970935 Abaixo do Peso | |
35 Adulto M 24.775913 Peso Normal | |
36 Idoso F 25.960947 Marginalmente acima do Peso | |
37 Idoso F 33.962143 Obeso | |
38 Idoso F 20.278542 Peso Normal | |
39 Idoso F 16.565657 Abaixo do Peso | |
40 Adulto M 16.040186 Abaixo do Peso | |
41 Idoso M 18.679373 Abaixo do Peso | |
42 Idoso M 32.129951 Obeso | |
43 Idoso F 23.625978 Peso Normal | |
44 Idoso F 28.754341 Acima do peso ideal | |
45 Idoso M 37.079700 Obeso | |
46 Idoso F 14.067248 Abaixo do Peso | |
47 Idoso F 12.870968 Abaixo do Peso | |
48 Adulto M 46.400951 Obeso |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 24 1 M 1.75 109.60 | |
2 25 1 M 1.85 150.30 | |
3 18 2 F 1.63 101.40 | |
4 24 1 M 2.09 117.00 | |
5 18 2 F 1.92 64.20 | |
6 24 2 F 1.80 69.40 | |
7 24 2 F 1.98 151.90 | |
8 22 1 M 2.05 60.50 | |
9 20 2 F 2.05 58.80 | |
10 15 2 F 1.69 129.00 | |
11 16 1 M 1.62 85.00 | |
12 19 1 M 1.49 142.20 | |
13 19 2 F 1.69 80.10 | |
14 15 1 M 1.81 63.80 | |
15 19 2 F 1.75 141.90 | |
16 17 2 F 1.55 120.80 | |
17 22 2 F 2.10 109.20 | |
18 21 1 M 1.99 119.50 | |
19 37 1 M 1.64 42.50 | |
20 33 2 F 1.83 148.30 | |
21 41 1 M 2.07 115.10 | |
22 43 2 F 1.46 70.30 | |
23 25 2 F 1.74 96.90 | |
24 25 1 M 1.93 68.90 | |
25 29 2 F 1.78 124.40 | |
26 41 1 M 2.10 117.70 | |
27 29 2 F 1.94 155.10 | |
28 42 2 F 1.51 128.30 | |
29 55 1 M 1.58 92.70 | |
30 89 2 F 1.71 122.80 | |
31 53 1 M 1.59 129.10 | |
32 51 2 F 1.83 101.40 | |
33 58 1 M 2.07 45.50 | |
34 62 2 F 1.84 47.30 | |
35 47 1 M 1.78 78.50 | |
36 65 2 F 2.09 113.40 | |
37 66 2 F 1.77 106.40 | |
38 90 2 F 1.98 79.50 | |
39 64 2 F 1.65 45.10 | |
40 45 1 M 2.03 66.10 | |
41 68 1 M 1.54 44.30 | |
42 83 1 M 1.83 107.60 | |
43 89 2 F 1.79 75.70 | |
44 89 2 F 1.92 106.00 | |
45 71 1 M 2.02 151.30 | |
46 79 2 F 2.02 57.40 | |
47 82 2 F 2.01 52.00 | |
48 51 1 M 1.64 124.80 | |
49 60 2 F 1.96 152.10 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// TSA12015.c | |
// Estruturas de Dados e Algoritmos - EDA | |
// Professor Nilton | |
// | |
// Universidade de Brasília - Campus Gama (UnB-FGA) | |
// Created by Matheus Leite on 14/04/15. | |
// Copyright (c) 2015 Matheus Leite. All rights reserved. | |
// | |
#include <stdio.h> | |
#include <stdlib.h> | |
//struct que abrigará os dados de um cliente | |
struct Cliente | |
{ | |
int matricula; | |
int idade; | |
char sexo; | |
float altura; | |
float peso; | |
char *faixaEtaria; | |
float imc; | |
char *condicao; | |
}; | |
int main(int argc, char const *argv[]) | |
{ | |
//declaracao de variaveis | |
char ch; | |
int qtdLinhas=0; | |
FILE *arquivoClientes; | |
arquivoClientes = fopen("ArquivoClientes.txt", "r"); | |
//criando novo arquivo, caso nao exista | |
FILE *analiseIMC; | |
analiseIMC = fopen("analiseIMC.txt", "w"); | |
if(arquivoClientes==NULL){ | |
printf("Erro ao abrir o arquivo. \n"); | |
} | |
//quantidade de linhas | |
while(1){ | |
ch=fgetc(arquivoClientes); | |
switch(ch){ | |
case'\n': | |
qtdLinhas++; | |
break; | |
default: | |
break; | |
} | |
if(ch==EOF) | |
break; | |
} | |
//alocacao dinamica de memoria da struct | |
struct Cliente *umCliente; | |
umCliente = (struct Cliente*) calloc(qtdLinhas, sizeof(struct Cliente)); | |
//faz o ponteiro voltar pra o inicio da struct | |
rewind(arquivoClientes); | |
//lendo dados do arquivo e atribuindo ao vetor de structs | |
for (int i = 0; i < qtdLinhas; ++i) | |
{ | |
int lixo; | |
fscanf(arquivoClientes, "%d %d %d %c %f %f", &umCliente[i].matricula, &umCliente[i].idade, &lixo, &umCliente[i].sexo, &umCliente[i].altura, &umCliente[i].peso); | |
} | |
for (int i = 0; i < qtdLinhas; ++i) | |
{ | |
//calculando o IMC de cada cliente | |
float peso = umCliente[i].peso; | |
float altura = umCliente[i].altura; | |
umCliente[i].imc = (peso/(altura*altura)); | |
//atribuindo faixa etaria do cliente | |
if (umCliente[i].idade<=11) | |
{ | |
umCliente[i].faixaEtaria = "Infantil"; | |
} else if (umCliente[i].idade>11 && umCliente[i].idade<18) | |
{ | |
umCliente[i].faixaEtaria = "Adolescente"; | |
} else if (umCliente[i].idade>17 && umCliente[i].idade<25) | |
{ | |
umCliente[i].faixaEtaria = "Jovem"; | |
} else if (umCliente[i].idade>24 && umCliente[i].idade<55) | |
{ | |
umCliente[i].faixaEtaria = "Adulto"; | |
} else if (umCliente[i].idade>54) | |
{ | |
umCliente[i].faixaEtaria = "Idoso"; | |
} | |
} | |
for (int i = 0; i < qtdLinhas; ++i) | |
{ | |
//atribuindo condicao do cliente | |
//caso seja mulher | |
if (umCliente[i].sexo=='F'){ | |
if (umCliente[i].imc<19.1) | |
{ | |
umCliente[i].condicao = "Abaixo do Peso"; | |
} else if (umCliente[i].imc>19.0 && umCliente[i].imc<25.9) | |
{ | |
umCliente[i].condicao = "Peso Normal"; | |
} else if (umCliente[i].imc>25.8 && umCliente[i].imc<27.4) | |
{ | |
umCliente[i].condicao = "Marginalmente acima do Peso"; | |
} else if (umCliente[i].imc>27.3 && umCliente[i].imc<32.4) | |
{ | |
umCliente[i].condicao = "Acima do peso ideal"; | |
} else if (umCliente[i].imc>32.3) | |
{ | |
umCliente[i].condicao = "Obeso"; | |
} | |
} else if (umCliente[i].sexo=='M'){ | |
if (umCliente[i].imc<20.7) | |
{ | |
umCliente[i].condicao = "Abaixo do Peso"; | |
} else if (umCliente[i].imc>20.6 && umCliente[i].imc<26.5) | |
{ | |
umCliente[i].condicao = "Peso Normal"; | |
} else if (umCliente[i].imc>26.5 && umCliente[i].imc<27.9) | |
{ | |
umCliente[i].condicao = "Marginalmente acima do Peso"; | |
} else if (umCliente[i].imc>27.8 && umCliente[i].imc<31.2) | |
{ | |
umCliente[i].condicao = "Acima do peso ideal"; | |
} else if (umCliente[i].imc>31.1) | |
{ | |
umCliente[i].condicao = "Obeso"; | |
} | |
} | |
} | |
//imprimindo resultados no arquivo analiseIMC.txt | |
fprintf(analiseIMC, "MATRICULA\t\tFAIXA ETARIA\t\tSEXO\t\tIMC\t\tCONDICAO\t\n"); | |
for (int i = 0; i < qtdLinhas; i++) | |
{ | |
fprintf(analiseIMC, "%d\t\t%s\t\t%c\t\t%f\t\t%s\t\n",umCliente[i].matricula, umCliente[i].faixaEtaria, umCliente[i].sexo, umCliente[i].imc, umCliente[i].condicao); | |
} | |
//fechando acesso aos arquivos | |
fclose(analiseIMC); | |
fclose(arquivoClientes); | |
printf("Qtd linhas %d\n",qtdLinhas); | |
printf("Operacao concluida! Procure o arquivo analiseIMC.txt.\n"); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment