Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM_STR 200
  4. #define TAM_VET 50
  5.  
  6. // Estrutura para armazenamento do nome do metodo de refino e um numero associado
  7. // Conheço dois principais tipos de refino,um e a destilação fracionada e o outro e o craqueamento ou pirólise(cracking)
  8. typedef struct str_refino{
  9. char nomeRefino[TAM_STR];
  10. int numero;
  11. }tipo_refino;
  12. // Estrutura para armazenamento de nome,medida dos produtos quimicos e em qual refino que foi utilizado
  13. typedef struct str_prodQuimico{
  14. char nomeprodQuimico[TAM_STR];
  15. int numdeRefinos;
  16. tipo_refino metododeRefino[TAM_VET];
  17. char medidaprodQuimico[TAM_STR];
  18. }tipo_prodQuimico;
  19.  
  20. // Variáveis globais
  21. int numprodQuimicos;
  22. tipo_prodQuimico prodQuimico[TAM_VET];
  23.  
  24. // Protótipos de funcoes
  25. tipo_prodQuimico criaprodQuimico();
  26. void leituraTextual(char nomeArq[TAM_STR]);
  27. void impressaoTextual(char nomeArq[TAM_STR]);
  28. void leituraBinaria(char nomeArq[TAM_STR]);
  29. void impressaoBinaria(char nomeArq[TAM_STR]);
  30.  
  31.  
  32. // Função que recebe dados de um produto quimico
  33. tipo_prodQuimico criaprodQuimico(){
  34. tipo_prodQuimico produto;
  35. int i;
  36. printf("Digite o nome do produto quimico:\n");
  37. scanf("%s",produto.nomeprodQuimico);
  38. printf("Digite o numero de metodos de refino:\n");
  39. scanf("%d",&produto.numdeRefinos);
  40. for(i=0;i<produto.numdeRefinos;i++){
  41. printf("Digite o nome do refino:\n");
  42. scanf("%s", produto.metododeRefino[i].nomeRefino);
  43. printf("Digite 1 para destilação e 2 para craqueamento:\n");
  44. scanf("%d", &produto.metododeRefino[i].numero);
  45.  
  46. }
  47. printf("Digite a medida usada no produto quimico:\n");
  48. gets(produto.medidaprodQuimico);
  49. return produto;
  50. }
  51.  
  52. // Função que realiza a leitura das receitas de um arquivo texto
  53. void leituraTextual(char nomeArq[TAM_STR]){
  54. FILE *arq;
  55. int i,j;
  56.  
  57. arq = fopen(nomeArq,"r");
  58. if(arq==NULL){
  59. printf("Erro na abertura do arquivo\n");
  60. exit(1);
  61. }
  62. fscanf(arq,"%d\n",&numprodQuimicos);
  63. for(i=0;i< numprodQuimicos;i++){
  64. fgets(prodQuimico[i].nomeprodQuimico,TAM_STR,arq);
  65. fscanf(arq,"%d\n",&prodQuimico[i].numdeRefinos);
  66. for(j=0;j<prodQuimico[i].numdeRefinos;j++){
  67. fscanf(arq,"%s\n",prodQuimico[i].metododeRefino[j].nomeRefino);
  68. fscanf(arq,"%d\n",&prodQuimico[i].metododeRefino[j].numero);
  69.  
  70. }
  71. fgets(prodQuimico[i].medidaprodQuimico,TAM_STR,arq);
  72. }
  73. fclose(arq);
  74. }
  75.  
  76. // Função que imprime as receitas em um arquivo texto
  77. void impressaoTextual(char nomeArq[TAM_STR]){
  78. FILE *arq;
  79. int i,j;
  80.  
  81. arq = fopen(nomeArq,"w");
  82. if(arq==NULL){
  83. printf("Erro na abertura do arquivo\n");
  84. exit(1);
  85. }
  86.  
  87. fprintf(arq,"%d\n",numprodQuimicos);
  88. for(i=0;i<numprodQuimicos;i++){
  89. fprintf(arq,"%s\n",prodQuimico[i].nomeprodQuimico);
  90. fprintf(arq,"%d\n",prodQuimico[i].numdeRefinos);
  91. for(j=0;j<prodQuimico[i].numdeRefinos;j++){
  92. fprintf(arq,"%s\n",prodQuimico[i].metododeRefino[j].nomeRefino);
  93. fprintf(arq,"%d\n",prodQuimico[i].metododeRefino[j].numero);
  94.  
  95. }
  96. fprintf(arq,"%s\n",prodQuimico[i].medidaprodQuimico);
  97. }
  98. fclose(arq);
  99. }
  100.  
  101. // Função que realiza a leitura de um arquivo binário
  102. void leituraBinaria(char nomeArq[TAM_STR]){
  103. FILE *arq;
  104.  
  105. arq = fopen(nomeArq,"rb");
  106. if(arq==NULL){
  107. printf("Erro na abertura do arquivo\n");
  108. exit(1);
  109. }
  110. fread(&numprodQuimicos,sizeof(int),1,arq);
  111. fread(&prodQuimico,sizeof(tipo_prodQuimico),numprodQuimicos,arq);
  112.  
  113. fclose(arq);
  114. }
  115.  
  116. // Função que imprime os dados de um produto quimico em um arquivo binário
  117. void impressaoBinaria(char nomeArq[TAM_STR]){
  118. FILE *arq;
  119.  
  120. arq = fopen(nomeArq,"wb");
  121. if(arq==NULL){
  122. printf("Erro na abertura do arquivo\n");
  123. exit(1);
  124. }
  125. fwrite(&numprodQuimicos,sizeof(int),1,arq);
  126. fwrite(&prodQuimico,sizeof(tipo_prodQuimico),numprodQuimicos,arq);
  127.  
  128. fclose(arq);
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement