fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <string.h>
  5.  
  6. #define MAX 100
  7. #define QACOES 5
  8.  
  9. struct Data
  10. {
  11. int dia;
  12. int mes;
  13. int ano;
  14. };
  15.  
  16. struct bvalores
  17. {
  18. char codigoAcao[6];
  19. char areaAtuacao[MAX];
  20. struct Data data;
  21. float valorAbertura = 0;
  22. float valorFechamento = 0;
  23. double variAcao;
  24. };
  25.  
  26. struct bvalores acoes[QACOES];
  27. int contador;
  28.  
  29. //recebe os dados digitados pelo usuário
  30. void registros(struct bvalores* acoes)
  31. {
  32. setlocale(LC_ALL, "Portuguese");
  33.  
  34. printf("Digite o código da ação: ");
  35. scanf("%s", acoes->codigoAcao);
  36. printf("Digite a área de atuação da empresa: ");
  37. scanf("%s", acoes->areaAtuacao);
  38. printf("Digite o valor de abertura: ");
  39. scanf("%f", &acoes->valorAbertura);
  40. printf("Digite o valor de fechamento: ");
  41. scanf("%f", &acoes->valorFechamento);
  42.  
  43. acoes->variAcao = (acoes->valorFechamento - acoes->valorAbertura) / acoes->valorAbertura;
  44. acoes->variAcao *= 100;
  45.  
  46. printf("Data de lançamento: ");
  47. scanf("%d/%d/%d", &acoes->data.dia, &acoes->data.mes, &acoes->data.ano);
  48. }
  49.  
  50. //registra cada ação com seus respectivos dados em uma posição da memória
  51. void novoregistro()
  52. {
  53. setlocale(LC_ALL, "Portuguese");
  54.  
  55. if (contador < QACOES)
  56. {
  57. //*(acoes + contador) = (struct bvalores*)malloc(1 * sizeof(struct bvalores));
  58. registros(&acoes[contador]);
  59. contador++;
  60. }
  61. else
  62. {
  63. printf("Só é possível 5 registros. Limite excedido");
  64. }
  65. }
  66.  
  67. char menu()
  68. {
  69. setlocale(LC_ALL, "Portuguese");
  70.  
  71. printf("\n");
  72. printf("Digite [I] para incluir um novo registro: \n");
  73. printf("Digite [R] para visualizar a variação das ações registradas: \n");
  74. printf("Digite [S] para sair do programa: \n");
  75.  
  76. printf("\nQual a opção desejada: ");
  77.  
  78. int opcao = getchar();
  79. int c;
  80.  
  81. while ((c = getchar()) != '\n' && c != EOF)
  82. {
  83. opcao = c;
  84. }
  85. return opcao;
  86. }
  87.  
  88. //função que monta um relatório dos registro das açoes
  89. void relatorio()
  90. {
  91. setlocale(LC_ALL, "Portuguese");
  92. struct bvalores* acao;
  93.  
  94. for (int i = 0; i < contador; i++)
  95. {
  96. acao = &acoes[i];
  97. printf("Ação da bolsa: %s - Area de atuação: %s\n", acao->codigoAcao, acao->areaAtuacao);
  98. printf("Data da operação: %02d/%02d/%04d\n", acao->data.dia, acao->data.mes, acao->data.ano);
  99. printf("\n");
  100. printf("Valor de abertura: R$ %.2f - Valor de fechamento: R$ %.2f\n", acao->valorAbertura, acao->valorFechamento);
  101. printf("Variãção do dia: %.2f%%", acao->variAcao);
  102. printf("\n");
  103. }
  104. }
  105.  
  106. int main()
  107. {
  108. char sopcao;
  109.  
  110. do
  111. {
  112. sopcao = menu();
  113. switch (sopcao)
  114. {
  115. case 'i':
  116. case 'I':
  117. novoregistro();
  118. break;
  119.  
  120. case 'R':
  121. case 'r':
  122. relatorio();
  123. break;
  124.  
  125. default:
  126. printf("Opção invalida");
  127. break;
  128. }
  129. } while (sopcao != 'S' && sopcao != 's');
  130.  
  131. //system("pause");
  132. return 0;
  133. }
Success #stdin #stdout 0s 4944KB
stdin
I
PETR4
Energia
28.34
28.91
04/01/2021
R
S
stdout
Digite [I] para incluir um novo registro: 
Digite [R] para visualizar a variação das ações registradas: 
Digite [S] para sair do programa: 

Qual a opção desejada: Digite o código da ação: Digite a área de atuação da empresa: Digite o valor de abertura: Digite o valor de fechamento: Data de lançamento: 
Digite [I] para incluir um novo registro: 
Digite [R] para visualizar a variação das ações registradas: 
Digite [S] para sair do programa: 

Qual a opção desejada: Ação da bolsa: PETR4  -  Area de atuação: Energia
Data da operação: 04/01/2021

Valor de abertura: R$ 28.34  -  Valor de fechamento: R$ 28.91
Variãção do dia: 2.01%

Digite [I] para incluir um novo registro: 
Digite [R] para visualizar a variação das ações registradas: 
Digite [S] para sair do programa: 

Qual a opção desejada: Opção invalida