(2) Desenvolva um programa em C++ que contenha uma funçăo que leia os valores da base maior (B), da base menor (b) e da altura (h) de um trapézio, calcule e retorne o valor da área
. A validação dos dados de entrada deve ser realizada dentro da funcilo, garantindo que todos os valores lidos sejam positivos antes de efetuar o cálculo.
Passo 1
O enunciado pede um programa em C
que tenha uma função capaz de:
- Ler os valores da base maior
, base menor e altura de um trapézio. - Validar internamente que cada valor lido seja positivo.
- Calcular e retornar a área do trapézio.
O conteúdo principal é criar e usar funções em C
, ler dados do usuário, fazer validações com laços de repetição e aplicar a fórmula da área de um trapézio:
Passo 2
Dentro da função
– Declarar três variáveis do tipo
– Usar um
Dessa forma, garantimos que nenhuma das dimensões do trapézio seja não positiva.
calculaAreaTrapézio()
vamos:– Declarar três variáveis do tipo
double
para B
, b
e h
.– Usar um
do { … } while
para cada valor, pedindo ao usuário até que ele informe um número maior que zero.Dessa forma, garantimos que nenhuma das dimensões do trapézio seja não positiva.
Passo 3
Depois de lidos e validados
B
, b
e h
, aplicamos a fórmula da área:e retornamos esse valor para quem chamou a função.
Passo 4
No
– Chamamos
– Recebemos o resultado e exibimos na tela com
main()
:– Chamamos
calculaAreaTrapezio()
.– Recebemos o resultado e exibimos na tela com
std::cout
.Resposta
#include <iostream>
#include <limits>
// Função que lê B, b e h validando positividade e retorna a área do trapézio
double calculaAreaTrapezio() {
double B, b, h;
// Leitura e validação da base maior
do {
std::cout << "Digite a base maior (B) em metros: ";
std::cin >> B;
if (!std::cin.good() || B <\(=0\)) {
std::cout << "Valor invalido. B deve ser > 0.
";
std::cin.clear();
std::cin.ignore(std::\(numeric_limit s<s\)td::streamsize>::max(), '
');
}
} while (B <\(=0\));
// Leitura e validação da base menor
do {
std::cout << "Digite a base menor (b) em metros: ";
std::cin >> b;
if (!std::cin.good() || b <\(=0\)) {
std::cout << "Valor invalido. b deve ser > 0.
";
std::cin.clear();
std::cin.ignore(std::\(numeric_limit s<s\)td::streamsize>::max(), '
');
}
} while (b <\(=0\));
// Leitura e validação da altura
do {
std::cout << "Digite a altura (h) em metros: ";
std::cin >> h;
if (!std::cin.good() || h <\(=0\)) {
std::cout << "Valor invalido. h deve ser > 0.
";
std::cin.clear();
std::cin.ignore(std::\(numeric_limit s<s\)td::streamsize>::max(), '
');
}
} while (h <\(=0\));
// Cálculo da área
double area = ( (B + b) * h ) / 2.0;
return area;
}
int main() {
double area = calculaAreaTrapezio();
std::cout << "A area do trapezio e " << area << " \(m^2\)
";
return 0;
}