Buscar

#include using namespace std; typedef struct Categoria{ int codigo; double valor; } Categoria; // Inicializa um objeto categoria c...

#include

using namespace std;

typedef struct Categoria{

int codigo;
double valor;

} Categoria;

// Inicializa um objeto categoria com seu código e o valor que ela deve
ter em caixa para gastos com sua pasta.
void inicia_categoria(Categoria *categoria,int codigo_categoria, double
valor_caixa) { categoria->codigo = codigo_categoria;
categoria->valor = valor_caixa;

}

// Recupera o código correspondente a uma categoria.
int codigo_categoria(Categoria *categoria) {

return categoria->codigo;

}

// Recupera o valor em caixa de uma categoria.
double valor_caixa_categoria(Categoria *categoria){

double caixa;
caixa = categoria->valor;
return caixa;

}

// Adiciona uma quantia ao caixa de uma categoria.
void adiciona_caixa_categoria(Categoria *categoria, double valor) {

categoria->valor += valor;
}

// Remove uma quantia ao caixa de uma categoria.
void gasta_caixa_categoria(Categoria *categoria, double valor) {

categoria->valor -= valor;
}

typedef struct Orcamento{

Categoria categorias[5];

} Orcamento;

// Inicializa um objeto Orçamento, sendo que ele deve conter um objeto
categoria para cada pasta.
// Recebe como parâmetro o valor monetário que deve ser atribuído a
aquele orçamento.
// Este valor deve ser distribuído a cada categoria, nos percentuais
descritos anteriormente.
void inicia_orcamento(Orcamento *orcamento, double impostos) { double valor_saude = 0.15 * impostos;
double valor_educacao = 0.15 * impostos;
double valor_seguranca = 0.2 * impostos;
double valor_previdencia = 0.35 * impostos;
double valor_administracao = 0.15 * impostos;

inicia_categoria(&orcamento->categorias[0], 0, valor_saude);
inicia_categoria(&orcamento->categorias[1], 1, valor_educacao);
inicia_categoria(&orcamento->categorias[2], 2, valor_seguranca);
inicia_categoria(&orcamento->categorias[3], 3, valor_previdencia);
inicia_categoria(&orcamento->categorias[4], 4, valor_administracao);
}

// Reduz o valor no caixa da categoria especificada.
void gasto_categoria(Orcamento *orcamento, int codigo_categoria, double
valor) {

gasta_caixa_categoria(&(orcamento->categorias[codigo_categoria]),
valor);
}

// Retorna o valor em caixa da categoria especificada.
double saldo_categoria(Orcamento *orcamento, int codigo_categoria) {

double saldo;
saldo= valor_caixa_categoria(&(orcamento-
categorias[codigo_categoria]));

return saldo;
}

// Retorna o ponteiro para o objeto da categoria especificada.
Categoria* recupera_categoria(Orcamento *orcamento, int codigo_categoria)
{

return &(orcamento->categorias[codigo_categoria]);
}

int main() {
Orcamento orcamento;

char test = 0;
while(cin >> test) {
switch (test) {
case 'o': {
double valor = 0;
cin >> valor;
inicia_orcamento(&orcamento, valor);
} break;
case 'g': {
int categoria = 0;
double valor = 0;
cin >> categoria >> valor;
gasto_categoria(&orcamento, categoria, valor);
cout << categoria << ": " << saldo_categoria(&orcamento, categoria)
<< endl;
}
break;
case 'p': {
for (int categoria = 0; categoria < 5; categoria++) {
cout << categoria << ": " << saldo_categoria(&orcamento,
categoria) << endl;
}
}
break;
default: {
cout << "----------" << endl;
} break;
}
}
return 0;
}


Essa pergunta também está no material:

PDS2- vpl1-2-3
10 pág.

Programação e Desenvolvimento Universidade Federal de Minas GeraisUniversidade Federal de Minas Gerais

💡 1 Resposta

User badge image

Ed Verified user icon

O código apresentado é um exemplo de implementação de um orçamento com categorias em C++. Ele define uma estrutura `Categoria` e uma estrutura `Orcamento`, além de funções para inicializar, manipular e obter informações sobre as categorias do orçamento. A função `inicia_categoria` é responsável por inicializar um objeto `Categoria` com um código e um valor em caixa. A função `codigo_categoria` retorna o código correspondente a uma categoria, e a função `valor_caixa_categoria` retorna o valor em caixa de uma categoria. As funções `adiciona_caixa_categoria` e `gasta_caixa_categoria` adicionam e removem uma quantia do caixa de uma categoria, respectivamente. A função `inicia_orcamento` inicializa um objeto `Orcamento`, distribuindo um valor monetário para cada categoria do orçamento. A função `gasto_categoria` reduz o valor no caixa da categoria especificada, e a função `saldo_categoria` retorna o valor em caixa da categoria especificada. A função `recupera_categoria` retorna o ponteiro para o objeto da categoria especificada. No `main`, o programa lê comandos do usuário para realizar operações no orçamento. O comando 'o' inicializa o orçamento com um valor, o comando 'g' realiza um gasto em uma categoria específica e exibe o saldo atual da categoria, o comando 'p' exibe o saldo de todas as categorias do orçamento, e qualquer outro comando exibe uma linha de separação. Espero ter ajudado a entender o código! Se tiver mais alguma dúvida, é só perguntar.

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais