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: carbon footprint = therms of natural gas ⋅ 11.7 . 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!!