Pagina Modulului 5
Ora 33 - Modulul 5

Volumele corpurilor regulate

Cub, sferă, cilindru, con — formule și implementare cu switch

45min teorie + 15min probleme PbInfo + exerciții practice
Competența 4.1
Săptămâna 4
Sigla liceului
TEORIE - 45 minute

Ce vei învăța astăzi?

Vom implementa formule pentru volumele corpurilor tridimensionale și vom folosi structura switch pentru a crea un calculator de volume.

Volumul cubului: V = l
Volumul sferei: V = 4/3 · π · r
Volumul cilindrului: V = π · r · h
Volumul conului: V = π · r · h / 3
Suprafețele corpurilor 3D

Dicționar: Matematică ↔ C++ (Volumele)

Simbol matematicCum se citeșteÎn C++Observație
l„l la puterea a treia"l*l*lsau pow(l,3)
r„r pătrat"r*rsau pow(r,2)
π„pi" (3.14159...)M_PI sau const double PI=3.14159265;<cmath>
4/3„patru treimi"4.0/34/3 = 1 (int)!
√(r+h)„radical din r+h"sqrt(r*r + h*h)generatoarea conului
2πr(r+h)„2 pi r ori (r+h)"2*PI*r*(r+h)suprafața cilindrului

De ce studiem volumele?

Analogie: Cât lichid încape?

Volumul ne spune „cât spațiu ocupă" un corp. Aplicații practice: cât apă încape într-un rezervor cilindric, cât aer are un balon sferic, sau cât beton trebuie turnat într-o fundație (paralelipiped). Un program care calculează volume e un instrument util în inginerie!

Formulele volumelor

CorpFormulă volumFormulă suprafațăParametriExemplu
CubV = lS = 6ll = latural=3 → V=27, S=54
ParalelipipedV = L·l·hS = 2(Ll + Lh + lh)L, l, h2×3×4 → V=24
SferăV = 4/3 · π · rS = 4πrr = razar=2 → V≈33.51
CilindruV = π · r · hS = 2πr(r+h)r, hr=3, h=5 → V≈141.37
ConV = π · r · h / 3S = πr(r+g), g=√(r+h)r, h, g=generatoarer=3, h=5 → V≈47.12

Fiecare formulă în C++:

Cub: V = l, S = 6l
double V = l*l*l; double S = 6*l*l;
„V egal l ori l ori l; S egal 6 ori l pătrat"
Sferă: V = 4/3 · π · r, S = 4πr
double V = (4.0/3)*PI*r*r*r; double S = 4*PI*r*r;
„V egal 4.0 supra 3 ori PI ori r cub. Atenție: 4.0/3 nu 4/3!"
Cilindru: V = π·r·h, S = 2πr(r+h)
double V = PI*r*r*h; double S = 2*PI*r*(r+h);
„V egal PI ori r pătrat ori h; S egal 2 PI r ori (r plus h)"
Con: V = π·r·h/3, g = √(r+h), S = πr(r+g)
double V = PI*r*r*h/3; double g = sqrt(r*r+h*h); double S = PI*r*(r+g);
„V egal PI r pătrat h supra 3; g egal radical din (r + h), S egal PI r ori (r plus g)"
Relație importantă: Cilindru vs. Con

Un con are exact 1/3 din volumul cilindrului cu aceeași rază și înălțime. V_con = V_cilindru / 3. Dacă turnăm apă din 3 conuri identice, umplem exact 1 cilindru!

Constanta π: În C++ folosim const double PI = 3.14159265358979; sau M_PI din <cmath>.

Calculator de volume cu switch

Algoritmul (Pseudocod):

// Calculator volume — meniu cu do-while + switch SET PI 3.14159265 DO PRINT meniu (1..5, 0=exit) READ opt SWITCH opt: CASE 1: // Cub READ l PRINT l*l*l CASE 3: // Sferă — atenție la 4.0/3! READ r PRINT (4.0/3) * PI * r*r*r CASE 4: // Cilindru READ r, h PRINT PI * r*r * h CASE 5: // Con = cilindru / 3 READ r, h PRINT PI * r*r * h / 3 WHILE opt ≠ 0
Program complet: Calculator de volume
#include <iostream>
#include <cmath>
using namespace std;

const double PI = 3.14159265358979;

int main() {
    int opt;
    double l, L, h, r;
    
    do {
        cout << "\n=== CALCULATOR DE VOLUME ===" << endl;
        cout << "1. Cub" << endl;
        cout << "2. Paralelipiped" << endl;
        cout << "3. Sfera" << endl;
        cout << "4. Cilindru" << endl;
        cout << "5. Con" << endl;
        cout << "0. Iesire" << endl;
        cout << "Alege: ";
        cin >> opt;

        switch(opt) {
            case 1:
                cout << "Latura cubului: "; cin >> l;
                if(l <= 0) { cout << "Eroare: latura trebuie sa fie pozitiva!" << endl; break; }
                cout << "Volumul = " << l*l*l << endl;
                cout << "Suprafata = " << 6*l*l << endl;
                break;
            case 2:
                cout << "Lungime, latime, inaltime: ";
                cin >> L >> l >> h;
                cout << "Volumul = " << L*l*h << endl;
                cout << "Suprafata = " << 2*(L*l + L*h + l*h) << endl;
                break;
            case 3:
                cout << "Raza sferei: "; cin >> r;
                if(r <= 0) { cout << "Eroare: raza trebuie sa fie pozitiva!" << endl; break; }
                cout << "Volumul = " << (4.0/3)*PI*r*r*r << endl;
                cout << "Suprafata = " << 4*PI*r*r << endl;
                break;
            case 4:
                cout << "Raza si inaltimea cilindrului: ";
                cin >> r >> h;
                cout << "Volumul = " << PI*r*r*h << endl;
                cout << "Suprafata = " << 2*PI*r*(r+h) << endl;
                break;
            case 5: {
                cout << "Raza si inaltimea conului: ";
                cin >> r >> h;
                cout << "Volumul = " << PI*r*r*h/3 << endl;
                double g = sqrt(r*r + h*h);
                cout << "Suprafata = " << PI*r*(r+g) << endl;
                break;
            }
            case 0:
                cout << "La revedere!" << endl;
                break;
            default:
                cout << "Optiune invalida!" << endl;
        }
    } while(opt != 0);
    
    return 0;
}
Urmărire: V_sferă (r=2)
PasOperație manualăExpresie C++Valoare
1r = 2 = 8r*r*r8
24/3 = 1.333...4.0/31.333
31.333 × π × 8(4.0/3)*PI*833.51

Cu 4/3 (fără .0): 1 × 3.14 × 8 = 25.13 — GREȘIT! Pierdem 25% din volum!

Greșeli frecvente și cum le eviți

CorpFormulă C++Greșeală frecventăCorect
Cubl*l*lpow(l,3) fără <cmath>Include <cmath> sau folosește l*l*l
Sferă(4.0/3)*PI*r*r*r4/3*PI*r*r*r → 4/3=1!Scrie 4.0/3
CilindruPI*r*r*hUită h (confuzie cu aria cercului)Verifică: cilindru = cerc × h
ConPI*r*r*h/3Scrie PI*r*r/3*h (greșit!)Operațiile se execută stânga→dreapta

Capcana 4/3: 4/3 = 1 în C++ deoarece ambii sunt int. Soluția: 4.0/3 sau (double)4/3. Testează mereu cu valori cunoscute (ex: r=1 → V_sferă ≈ 4.189).

Validarea datelor: Raza și dimensiunile trebuie să fie pozitive. Adaugă if(r <= 0) înainte de calcul.

Verificare cunoștințe

1. Ce valoare are 4/3 în C++ (cu int)?

2. Volumul unui cilindru cu r=2, h=5 este:

3. Relația dintre V_cilindru și V_con cu aceleași r și h:

4. Volumul sferei cu r=1 este aproximativ:

5. Cum declari PI corect în C++?

6. Suprafața sferei de rază r este:

Întrebări frecvente (FAQ)

De ce V_sfera vine cu 4/3 și nu cu 4?

Formula V = 4πr/3 vine din integrare (calcul integral). Intuitiv: sfera ocupă circa 52% din cubul care o înconjoară (2r × 2r × 2r = 8r, iar 4πr/3 ≈ 4.19r ≈ 52% din 8r).

Pot folosi pow(r, 3) în loc de r*r*r?

Da, dar r*r*r e mai rapid pentru puteri mici. pow() e util la puteri mari sau fracționare. Nu uita #include <cmath> dacă folosești pow!

Ce e generatoarea conului (g)?

Generatoarea este linia oblică de la vârf la baza cercului. Se calculează cu Pitagora: g = √(r + h), unde r e raza bazei și h e înălțimea. E necesară pentru suprafața laterală a conului.

De ce conul are volumul = cilindru / 3?

Intuitiv: conul e „ascuțit" — secțiunile sale transversale se micșorează de la bază la vârf. Matematic, se demonstrează prin integrare. La fel, piramida = prismă / 3 (cu aceeași bază și înălțime).

PROBLEME PBINFO - 15 minute

PbInfo - Volumul cubului

Formula l^3

Enunț:

Cerință: Se citeste latura unui cub. Afiseaza volumul.

Date de intrare:

l.

Date de ieșire:

Volumul cubului.

Exemplu:

Intrare:

3

Ieșire:

27

Explicație: 3^3=27.

Cum gândim soluția:
  1. Citim l.
  2. Calculam l*l*l.
  3. Afisam rezultatul.

Tip: Pentru l intreg, rezultatul poate fi intreg.

Scrie soluția în C++:
Soluție corectă:
#include <iostream>
using namespace std;

int main() {
    double l;
    cin >> l;
    cout << l * l * l;
}

PbInfo - Volumul cilindrului

Formula pi*r*r*h

Enunț:

Cerință: Se citesc raza si inaltimea cilindrului. Afiseaza volumul cu doua zecimale.

Date de intrare:

r h.

Date de ieșire:

Volumul cilindrului.

Exemplu:

Intrare:

2 5

Ieșire:

62.83

Explicație: pi*2*2*5=62.83.

Cum gândim soluția:
  1. Definim pi=3.14159.
  2. Calculam pi*r*r*h.
  3. Afisam cu doua zecimale.

Tip: Include <iomanip> pentru fixed si setprecision(2), adica afisare cu doua zecimale.

Scrie soluția în C++:
Soluție corectă:
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    const double pi = 3.14159;
    double r, h;
    cin >> r >> h;
    // Enuntul cere doua zecimale: 62.8318 devine 62.83.
    cout << fixed << setprecision(2) << pi * r * r * h;
}

PbInfo - Calculator de volume

Switch pentru corpuri

Enunț:

Cerință: Se citeste un cod: 1 cub, 2 sfera, 3 cilindru, 4 con. Afiseaza volumul.

Date de intrare:

Codul corpului si dimensiunile cerute.

Date de ieșire:

Volumul calculat.

Exemplu:

Intrare:

4 3 6

Ieșire:

56.55

Explicație: Pentru con: pi*r*r*h/3.

Cum gândim soluția:
  1. Citim codul.
  2. Cu switch alegem formula.
  3. Citim doar dimensiunile necesare.
  4. Afisam volumul.

Tip: Pentru meniuri, switch este mai clar decat multe if-uri.

Scrie soluția în C++:
Soluție corectă:
#include <iostream>
using namespace std;

int main() {
    const double pi = 3.14159;
    int op;
    cin >> op;
    double r, h, l, V = 0;
    switch (op) {
        case 1:
            cin >> l;
            V = l * l * l;
            break;
        case 2:
            cin >> r;
            V = (4.0 / 3) * pi * r * r * r;
            break;
        case 3:
            cin >> r >> h;
            V = pi * r * r * h;
            break;
        case 4:
            cin >> r >> h;
            V = pi * r * r * h / 3;
            break;
    }
    // Afisam cu doua zecimale deoarece exemplele de volum sunt zecimale.
    cout << fixed << setprecision(2) << V;
}
EXERCIȚII PRACTICE - 2 sarcini / 20 minute

Exercițiul Practic: Volume și suprafețe

Aplică formulele volumelor și suprafețelor pentru corpuri regulate, cu comparații și sortări simple. Poți lucra în calculatorul cu meniu sau în programe separate mai mici.

Mai multe variante corecte: dacă scopul este să verifici formula, un program separat este suficient. Dacă scopul este să exersezi meniul, folosește switch. În ambele variante, explică prin nume de variabile clare ce reprezintă r, h, g, V și S.

Sarcina 1: Suprafața totală completă

Completează programul pentru a afișa și suprafața totală la corpurile lucrate. Poți completa toate corpurile sau poți alege 2-3 corpuri și să explici formulele foarte clar.

Pași de rezolvare:
  1. La fiecare case, după afișarea volumului, adaugă calcul suprafață
  2. Cub: 6*l*l; Sferă: 4*PI*r*r
  3. Cilindru: 2*PI*r*(r+h); Con: PI*r*(r+g) cu g=sqrt(r*r+h*h)
Cub: S=6l | Sferă: S=4πr | Cilindru: S=2πr(r+h) | Con: S=πr(r+g)
Con: g = sqrt(r*r + h*h); S = PI*r*(r+g);
„Generatoarea conului (g) = ipotenuza triunghiului dreptunghic cu catetele r și h"
// Adăugăm suprafața la fiecare corp SWITCH (optiune): CASE cub: S 6 · l CASE sferă: S 4 · π · r CASE cilindru: S 2 · π · r · (r + h) CASE con: g sqrt(r + h) // generatoarea S π · r · (r + g)

De ce funcționează? Suprafața totală = suma tuturor fețelor. La cub: 6 fețe identice de l. La sferă: formula 4πr (dată). La cilindru: 2 cercuri (baze) + dreptunghiul lateral desfășurat = 2πr + 2πrh = 2πr(r+h). La con: cercul bazei + suprafața laterală desfășurată = πr(r+g), unde g = generatoarea (ipotenuza triunghiului r,h).

// La fiecare case, dupa volum, adaugi suprafata totala:
case 1: // Cub: 6 fete identice de l*l
    cout << "Suprafata = " << 6*l*l << endl; break;
case 3: // Sfera: formula 4*PI*r^2
    cout << "Suprafata = " << 4*PI*r*r << endl; break;
case 4: // Cilindru: 2 cercuri + suprafata laterala
    // S = 2*PI*r*r + 2*PI*r*h = 2*PI*r*(r+h)
    cout << "Suprafata = " << 2*PI*r*(r+h) << endl; break;
case 5: { // Con: cerc baza + suprafata laterala
    double g = sqrt(r*r + h*h);  // generatoarea (Pitagora!)
    // S = PI*r*r + PI*r*g = PI*r*(r+g)
    cout << "Suprafata = " << PI*r*(r+g) << endl; break;
}
Sarcina 2: Comparație volume

Citește r și h, calculează volumele sferei, cilindrului și conului, apoi afișează-le crescător. Poți sorta cu trei if-uri și swap, cu un vector mic, sau poți afișa manual dacă observi relațiile dintre valori.

Pași de rezolvare:
  1. Citește r și h
  2. Calculează: vs=(4.0/3)*PI*r*r*r, vc=PI*r*r*h, vn=PI*r*r*h/3
  3. Sortează cele 3 volume (cu swap) și afișează crescător
// Compară volumele a 3 corpuri, afișează crescător CITEȘTE r, h vs (4/3) · π · r // sferă vc π · r · h // cilindru vn π · r · h / 3 // con (= cilindru/3!) // Sortare cu 3 swap-uri (metoda bulelor pt 3 elemente): DACĂ a > b ATUNCI swap(a,b) DACĂ b > c ATUNCI swap(b,c) DACĂ a > b ATUNCI swap(a,b) SCRIE a, " < ", b, " < ", c

De ce funcționează? Conul are MEREU volumul cel mai mic (= cilindru/3). Sfera vs. cilindru depinde de raportul h/r. Sortarea cu 3 comparații + swap este Bubble Sort pentru 3 elemente — simplu și garantat corect. Folosim 4.0/3 (nu 4/3) pentru a evita împărțirea întreagă (4/3=1 în C++!).

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    const double PI = 3.14159265;
    double r, h;
    cin >> r >> h;
    // Calculam cele 3 volume
    double vs = (4.0/3)*PI*r*r*r;  // sfera (4.0/3 nu 4/3!)
    double vc = PI*r*r*h;           // cilindru
    double vn = PI*r*r*h/3;         // con (= cilindru / 3)
    // Sortare 3 valori cu metoda bulelor (3 swap-uri)
    double a=vs, b=vc, c=vn;
    if(a > b) swap(a,b);  // pas 1: pune minimul in a
    if(b > c) swap(b,c);  // pas 2: pune maximul in c
    if(a > b) swap(a,b);  // pas 3: verifica din nou a vs b
    cout << a << " < " << b << " < " << c;
    return 0;
}

Descarcă toate exercițiile și soluțiile