Napisz program, który z podanych długości prostopadłościanu będącymi liczbami całkowitymi dodatnimi obliczy pole powierzchni całkowitej i objętość prostopadłościanu. Proszę, aby zadanie zostalo zrobione w obrębie funkcji: int, cout, cin, do, while (wiadomo, wszystko z poziomu 2klasy :)

Odpowiedź :

Odpowiedź:

Wersja postawowa:

#include <iostream>

int main() {

   int a, b, h;

   a = b = h = -1;

   while (a <= 0) {

       std::cout << "Podaj dlugosc a:" << std::endl;

       std::cin >> a;

       if (a <= 0) {

           std::cout << "Podaj a jeszcze raz (musi byc > 0)" << std::endl;

       }

   }

   while (b <= 0) {

       std::cout << "Podaj dlugosc b:" << std::endl;

       std::cin >> b;

       if (b <= 0) {

           std::cout << "Podaj b jeszcze raz (musi byc > 0)" << std::endl;

       }

   }

   while (h <= 0) {

       std::cout << "Podaj dlugosc h:" << std::endl;

       std::cin >> h;

       if (h <= 0) {

           std::cout << "Podaj h jeszcze raz (musi byc > 0)" << std::endl;

       }

   }

   std::cout << "Objetosc prostopadloscianu wynosi " << a * b * h << std::endl;

   std::cout << "Pole powierzchni prostopadloscianu wynosi " << 2 * a * b + 2 * a * h + 2 * b * h << std::endl;

   return 0;

}

Wersja z wykorzystaniem funkcji bez powtarzanie kodu (krótsza, ale bardziej zaawansowana)

#include <iostream>

#include <string>

void print(int &variable, const std::string& variable_name){

   while (variable <= 0) {

       std::cout << "Podaj dlugosc " << variable_name << std::endl;

       std::cin >> variable;

       if (variable <= 0) {

           std::cout << "Podaj " << variable_name << " jeszcze raz (musi byc > 0)" << std::endl;

       }

   }

}

int main() {

   int a, b, h;

   a = b = h = -1;

   print(a, "a");

   print(b, "b");

   print(h, "c");

   std::cout << "Objetosc prostopadloscianu wynosi " << a * b * h << std::endl;

   std::cout << "Pole powierzchni prostopadloscianu wynosi " << 2 * a * b + 2 * a * h + 2 * b * h << std::endl;

   return 0;

}

Wyjaśnienie:

Zwykłe podstawianie do wzoru, nie ma czego zbytnio tłumaczyć