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

Distanța dintre două puncte în C++

Dându-se două puncte, să se determine distanța dintre acestea (reprezentat printr-un număr real).

Exemplu. Pentru punctele (3, 4) și (4, 5), distanța este 1.4142… (radical din 2).

Explicarea algoritmului

Ne vom folosi de teorema lui Pitagora pentru a determina distanța dintre două puncte.

Mai precis, vom proiecta unul din puncte pe aceeași ordonată ca și celălalt, formând un triunghi dreptunghic. Iată această proiecție pentru exemplul nostru de mai devreme (punctul verde este (3, 4), cel roșu este (4, 5), iar punctul albastru este proiecția — (4, 4)):

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

Observăm două lucruri:

  1. Proiecția are același y ca și primul punct și același x ca și al doilea (așadar, pentru punctele (x1, y1) și (x2, y2), proiecția ar fi (x2, y1) — observăm că și punctul (x1, y2) este bun);
  2. În noul triunghi dreptunghic format, distanța pe care noi vrem să o aflăm este ipotenuza dintr-un triunghi dreptunghic.

Așadar, distanța pe care vrem să o aflăm, ip, este egală cu sqrt(c12 + c22). Această valoare este egală cu diferența de x și de y al celor două puncte. Așadar, ip = sqrt((x1 - x2)2 + (y1 - y2)2).

Implementare C++

Iată o rezolvare în C++:

#include <iostream>
#include <cmath> //Ne trebuie biblioteca cmath pentru a avea acces la funcția de radical (sqrt)

using namespace std;

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

    //Diferența de x și y din formula de mai devreme
    //Pentru că ridicăm aceste numere la pătrat, nu contează semnul lor
    int deltaX = (x2 - x1);
    int deltaY = (y2 - y1);

    //Calculul și afișarea distanței
    double distanta = sqrt(deltaX * deltaX + deltaY  * deltaY);
    cout << "Distanta este " << distanta;
    return 0;
}

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

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

© 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