(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 \left(\mathrm{m}^{3}\right). 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:
  1. Ler os valores da base maior B, base menor b e altura h de um trapézio.
  2. Validar internamente que cada valor lido seja positivo.
  3. 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:
A = \frac{(B + b)\,h}{2}.

Passo 2

Dentro da função 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:
A = \frac{(B + b)\,h}{2}
e retornamos esse valor para quem chamou a função.

Passo 4

No 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;
}

Exercícios relacionados