Să se determine toate triunghiurile diferite care au lungimea laturilor numere naturale şi perimetrul p (p se citeşte de la tastatură). 19
#include <iostream>
using namespace std;
int main() {
int p;
cout << „Introduceti perimetrul: „;
cin >> p;
cout << „Triunghiurile cu perimetrul ” << p << ” sunt: ” << endl;
for (int a = 1; a <= p – 2; a++) {
for (int b = 1; b <= p – a – 1; b++) {
int c = p – a – b;
if (a + b > c && a + c > b && b + c > a) {
cout << „(” << a << „, ” << b << „, ” << c << „)” << endl;
}
}
}
return 0;
}
Pentru a determina toate triunghiurile cu perimetrul p, putem folosi o triplă buclă for pentru a parcurge toate posibilele combinații de lungimi ale laturilor. Vom folosi următoarea logică:
- Primul for va parcurge lungimile pentru latura a, de la 1 la p-2 (deoarece cel puțin o altă latură trebuie să aibă o lungime mai mare de 1 și nu putem avea o latură cu lungimea egală cu p).
- Al doilea for va parcurge lungimile pentru latura b, de la 1 la p-a-1 (deoarece cel puțin o altă latură trebuie să aibă o lungime mai mare de 1 și nu putem avea o latură cu lungimea egală cu p sau cu a).
- Latura c, care este latura rămasă, va avea lungimea p-a-b.
- Dacă lungimile laturilor formează un triunghi valid (adunarea a oricăror două laturi este mai mare decât lungimea celei de-a treia), atunci afișăm triunghiul.
Observație: Pentru acest algoritm, există o redundanță în afișarea triunghiurilor, deoarece fiecare triunghi este afișat de trei ori (o dată pentru fiecare combinație de lungimi ale laturilor). Pentru a evita acest lucru, am putea introduce o condiție suplimentară pentru a afișa fiecare triunghi doar o dată, dar am ales să nu facem asta în acest exemplu deoarece algoritmul rămâne eficient și clar în această formă.