Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Aria unui triunghi folosind coordonatele acestora în C++

Dându-se trei puncte în plan, să se determine aria triunghiului pe care îl formează.

Exemplu. Pentru punctele (1, 1), (4, 3) și (-2, 3), triunghiul are aria 6. Putem observa triunghiul în imagine:

https://i.ibb.co/cTK3fkv/Untitled.png

Metoda de rezolvare

Am discutat într-un alt articol cum se calculează distanța dintre două puncte. Astfel, știind coordonatele punctelor, putem foarte ușor să determinăm laturile triunghiului. De aici, putem calcula perimetrul, și implicit, semiperimetrul triunghiului nostru (perimetrul împărțit la 2).

Există în matematică o formulă celebră de determinare a ariei unui triunghi, având doar semiperimetrul acestuia. Formula lui Heron ne spune că aria unui triunghi este egală cu formula:

https://i.ibb.co/jgsm70L/image.png

Având această formulă, putem foarte ușor să rezolvăm problema.

Implementare C++

Vom folosi anumite funcții care să ne ajute să calculăm valorile cerute.

#include <iostream>
#include <cmath> //Pentru funcția sqrt

using namespace std;

double dist(int x1, int y1, int x2, int y2) { //Funcție ajutătoare pentru a calcula distanța dintre două puncte
    int deltaX = x1 - x2;
    int deltaY = y1 - y2;
    return sqrt(deltaX * deltaX + deltaY * deltaY);
}

int main()
{
    //Declarăm și citim coordonatele celor trei puncte
    int x1, y1, x2, y2, x3, y3;
    cout << "Primul punct: ";
    cin >> x1 >> y1;
    cout << "Al doilea punct: ";
    cin >> x2 >> y2;
    cout << "Al treilea punct: ";
    cin >> x3 >> y3;

    //Declarăm și calculăm laturile triunghiului, precum și perimetrul acestuia
    double a, b, c, p; //Folosim double, deoarece distanțele nu sunt neapărat numere întregi
    a = dist(x1, y1, x2, y2);
    b = dist(x1, y1, x3, y3);
    c = dist(x2, y2, x3, y3);
    p = (a + b + c) / 2;

    //Calculăm și afișăm aria, folosind formula lui Heron
    double arie = sqrt(p * (p - a) * (p - b) * (p - c));
    cout << "Aria triunghiului este " << arie;
    return 0;
}

Alte note și resurse

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

Cuprinsul lecției

Se încarcă…

Citește și

Generarea șirului Fibonacci generalizat în C++Aflarea sumei primelor N sume GaussTipul struct în C++. Ce sunt structurile de date neomogeneSuma elementelor unui vector recursiv în C++Citește un șir de caractere cu spații în C++Șirul lui Fibonacci în C++Instrucțiunea continue (structuri repetitive)Căutare binară în C++Instrucțiunea while (structuri repetitive)Cel mai mic număr cu suma cifrelor N în C++Pointer în C++. Variabile de tipul char * (char steluță)Ciurul lui Eratostene în C++Verificare dacă șir de caractere este palindrom în C++Instrucțiunea break (structuri repetitive)Complexitatea unui algoritm (timp și spațiu) în C++Transformarea unei litere mari în literă mică în C++Numărul de apariții al unui număr într-un vector în C++Cifra de control a unui numărBordarea unei matrice în C++Al N-lea termen dintr-o progresie aritmeticăInstrucțiunea for (structuri repetitive)Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortCifra maximă a unui număr recursiv în C++Valoarea absolută (modulul) unui număr în C++Citirea și afișarea matricelor în C++Distanța dintre două puncte în C++Verifică dacă un număr este par sau impar fără modulo în C++Verificare număr prim în C++ (Clasa a IX-a)Cifra maximă și minimă a unui număr în C++Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Oglinditul unui număr în C++Instrucțiunea do while (structuri repetitive)CMMMC a două numere în C++ (cel mai mic multiplu comun)Prima cifră a unui număr în C++Verifică dacă o literă este vocală în C++Suma 1 + 2 + 3 + ... + N în C++Numărul de divizori al unui număr în C++Transformarea unei litere mici în literă mare în C++Interschimbarea a două variabile în C++ (3 metode)Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Afișarea elementelor unui vector recursiv în C++Afișarea divizorilor primi ai unui număr în C++Structuri repetitive (while, do while, for, etc)Al N-lea termen Fibonacci în C++Ce este o variabilă unsigned în C++?Cel mai frecvent element dintr-un șir în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiMaximul și minimul a trei valori în C++Inversarea unui vector în C++Funcții predefinite în C++ (matematice, șiruri de caractere)Verifică dacă un caracter este literă în C++Cum să citești și să afișezi în fișiere în C++Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorIndicatorul lui Euler în C++Maximul și minimul a două valori în C++Verificarea unui an bisect în C++Numărul aranjamentelor în C++ (formula aranjamentelor)Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Cum să calculezi instant 2 la puterea N în C++Transformarea unui număr din baza 2 în baza 10 în C++Do while vs while în C++ - Care e diferența?Numărul de cifre ale factorialului unui numărTransformarea unui număr din baza 10 în baza 2 în C++Cea mai lungă secvență de elemente crescătoare în C++Șiruri de caractere în C++. Tot ce trebuie să știiCopiuțe: Cifrele unui numărOglinditul recursiv al unui număr în C++Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicRădăcina cubică a unui număr în C++ (cube root)Verifică dacă un număr aparține șirului Fibonacci în C++Ce înseamnă variabilă globală și locală în C++?Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Verifică dacă un număr dat este o putere de 2 în C++Vectorii în C++: declarare și parcurgereTipuri de date în C++: numere întregi, reale, caractere și alteleFactorialul unui număr în C++Matrice pătratice în C++. Diagonala principală și secundarăMaximul și minimul a n valori în C++Operații cu numere mari în C++ - Toate funcțiile explicateInversarea unui șir de caractere în C++Combinatorică în C++: permutări, aranjamente, combinări și alteleNumărul permutărilor în C++ (formula permutărilor)Recursivitate în C++Cel mai semnificativ bit în C++Cum să afișezi partea întreagă a unui număr real în C++Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Câte numere naturale sunt într-un interval dat? (C++)Radicalul unui număr în C++ (rădăcina pătrată)Verifică dacă trei puncte sunt coliniare C++Aria unui triunghi folosind coordonatele acestora în C++Numărul combinărilor în C++ (formula combinărilor)Interclasarea a doi vectori în C++Divide et Impera (metodă de programare C++)Cel mai puțin semnificativ bit în C++Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleSuma numerelor naturale dintr-un interval dat în C++Calculul combinărilor de n luate câte k (nCk) în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăInstrucțiunea de decizie în C++: if, else, switch, caseCel mai mare divizor comun (CMMDC) a două numere în C++Ce înseamnă endl în C++?Verifică dacă un caracter este cifră în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Numărul de divizori primi ai unui număr în C++Maximul și minimul unui vector în C++Mediana unui șir de valori în C++Al N-lea termen dintr-o progresie geometricăDe ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Vectorii în C++: citire și afișareCodul ASCII (tabel complet)Numărul minim de peroane pentru o gară în C++CMMDC recursiv a două numere naturale în C++Ce este o funcție void în C++?Comentarii în C++Verifică dacă o literă este mică sau mare în C++Aria și circumferința unui cerc în C++Vectori de frecvență (de apariții) în C++Suma divizorilor unui număr în C++Verificare dacă un număr este palindrom în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Funcții în C++. Ce sunt subprogrameleAflă secolul unui an citit de la tastatură în C++Numere triunghiulare. Verificarea unui număr triunghiular

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont