Medição de emissão de dióxido de carbono: arrays
de ponteiros para função. Usando arrays de
ponteiros para função, como você aprendeu neste capítulo,
é possível especificar um conjunto de funções que são
chamadas com os mesmos tipos de argumentos e que retornam
o mesmo tipo de dado. Governos e empresas do
mundo inteiro estão se preocupando cada vez mais com
as medições de carbono (emissões anuais de dióxido de
carbono na atmosfera) de prédios que queimam vários
tipos de combustíveis para gerar calor, veículos que queimam
combustíveis para gerar potência e outras questões
similares. Muitos cientistas culpam esses gases de efeito
estufa pelo fenômeno chamado aquecimento global. Crie
três funções que ajudem a calcular a medição de emissão
de dióxido de carbono de um prédio, um carro e uma
bicicleta, respectivamente. Cada função deverá solicitar
dados apropriados do usuário e, depois, calcular e exibir
as respectivas medições. (Pesquise alguns sites que explicam
como calcular as medições de carbono.) As funções
não deverão receber parâmetros, mas deverão retornar
void. Escreva um programa que induza o usuário a digitar
o tipo de medição de emissão de dióxido de carbono
a ser calculada, e depois chame a função correspondente
no array dos ponteiros para função. Para cada tipo de
medição, apresente alguma informação de identificação
e o objeto que deixa aquela emissão.
Passo 1
Neste exercício, usaremos uma matriz de ponteiros de função para calcular a pegada de carbono de um prédio, carro ou bicicleta.
Pesquisaremos na web para descobrir como calcular a pegada de carbono para cada um desses três.
Também escreveremos uma função separada para todos os três. Todas as três funções serão anuladas e não terão nenhum parâmetro.
Vamos primeiro incluir a biblioteca stdio.h e escrever os protótipos da função.
#include "stdio.h"
void building();
void car();
void bicycle();
Passo 2
Na função main(), definiremos um array de ponteiros de função chamado f e ele apontará para as três funções para as quais escrevemos protótipos.
Em seguida, executaremos um loop while que será executado enquanto o usuário desejar. Em cada iteração, o usuário escolherá para que deseja calcular a pegada de carbono.
Então, com base na escolha do usuário, uma função será chamada.
int main()
{
int choice;
void (*f[3])() = { building, car, bicycle };
do {
printf("Calculate carbon footprint for: (Enter 3 to exit)\n");
printf("0) a building\n");
printf("1) a car\n");
printf("2) a bicycle\n");
printf(">> ");
do {
scanf("%d", &choice);
} while (choice 3);
if (choice != 3) {
f[choice]();
}
puts("");
} while (choice != 3);
}
Passo 3
A função edifício()
Esta é a função que será utilizada para calcular a pegada de carbono de um edifício.
O cálculo será feito usando a seguinte fórmula: = . O usuário entrará com o número de termas de gás natural que o edifício consome.
void building()
{
double therms;
printf("Enter the amount of therms of natural"\
" gas the building consumes:\n");
scanf("%lf", &therms);
printf("Calculating carbon footprint for a building...\n");
printf("Carbon footprint: %.2lf pounds of CO2.\n", therms * 11.7);
}
A função carro()
Esta função irá calcular a pegada de carbono de um carro.
O usuário irá inserir o número de milhas percorridas por ano, a eficiência de combustível (milhas por galão), e é o carro movido a gasolina ou diesel.
As duas fórmulas a seguir serão usadas para o cálculo, dependendo se o carro funciona com gasolina ou diesel:
pegada de carbono diesel = milhas/mpg⋅6.12
pegada de carbono da gasolina=milhas/mpg⋅5.34
A função bicicleta()
Esta função é usada para calcular a pegada de carbono de uma bicicleta.
O usuário digitará o número de milhas percorridas e a pegada de carbono será calculada usando a seguinte fórmula:
0,075carbon footprint=miles⋅0,075
void bicycle()
{
double miles;
printf("Enter the miles driven: ");
scanf("%lf", &miles);
printf("Calculating carbon footprint for a bycicle...\n");
printf("Carbon footprint: %.2lf pounds of CO2.\n",
miles * 0.075);
}
Resposta
Ver todo o desenvolvimento parça!!