#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#define MAX 100
#define QACOES 5
struct Data
{
int dia;
int mes;
int ano;
};
struct bvalores
{
char codigoAcao[6];
char areaAtuacao[MAX];
struct Data data;
float valorAbertura = 0;
float valorFechamento = 0;
double variAcao;
};
struct bvalores acoes[QACOES];
int contador;
//recebe os dados digitados pelo usuário
void registros(struct bvalores* acoes)
{
setlocale(LC_ALL, "Portuguese");
printf("Digite o código da ação: ");
scanf("%s", acoes->codigoAcao);
printf("Digite a área de atuação da empresa: ");
scanf("%s", acoes->areaAtuacao);
printf("Digite o valor de abertura: ");
scanf("%f", &acoes->valorAbertura);
printf("Digite o valor de fechamento: ");
scanf("%f", &acoes->valorFechamento);
acoes->variAcao = (acoes->valorFechamento - acoes->valorAbertura) / acoes->valorAbertura;
acoes->variAcao *= 100;
printf("Data de lançamento: ");
scanf("%d/%d/%d", &acoes->data.dia, &acoes->data.mes, &acoes->data.ano);
}
//registra cada ação com seus respectivos dados em uma posição da memória
void novoregistro()
{
setlocale(LC_ALL, "Portuguese");
if (contador < QACOES)
{
//*(acoes + contador) = (struct bvalores*)malloc(1 * sizeof(struct bvalores));
registros(&acoes[contador]);
contador++;
}
else
{
printf("Só é possível 5 registros. Limite excedido");
}
}
char menu()
{
setlocale(LC_ALL, "Portuguese");
printf("\n");
printf("Digite [I] para incluir um novo registro: \n");
printf("Digite [R] para visualizar a variação das ações registradas: \n");
printf("Digite [S] para sair do programa: \n");
printf("\nQual a opção desejada: ");
int opcao = getchar();
int c;
while ((c = getchar()) != '\n' && c != EOF)
{
opcao = c;
}
return opcao;
}
//função que monta um relatório dos registro das açoes
void relatorio()
{
setlocale(LC_ALL, "Portuguese");
struct bvalores* acao;
for (int i = 0; i < contador; i++)
{
acao = &acoes[i];
printf("Ação da bolsa: %s - Area de atuação: %s\n", acao->codigoAcao, acao->areaAtuacao);
printf("Data da operação: %02d/%02d/%04d\n", acao->data.dia, acao->data.mes, acao->data.ano);
printf("\n");
printf("Valor de abertura: R$ %.2f - Valor de fechamento: R$ %.2f\n", acao->valorAbertura, acao->valorFechamento);
printf("Variãção do dia: %.2f%%", acao->variAcao);
printf("\n");
}
}
int main()
{
char sopcao;
do
{
sopcao = menu();
switch (sopcao)
{
case 'i':
case 'I':
novoregistro();
break;
case 'R':
case 'r':
relatorio();
break;
default:
printf("Opção invalida");
break;
}
} while (sopcao != 'S' && sopcao != 's');
//system("pause");
return 0;
}