# PBinfo #1815 – unghi – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

La geometrie, domnul profesor de matematică le-a vorbit elevilor săi despre unghiuri. Pentru a fi sigur că aceștia au înțeles noțiunile predate, le-a dat o listă cu n probleme.

Cerința
Fiind date numărul de ore în variabila h și numărul de minute în variabila m, să se determine câte grade avea unghiul dintre orarul și minutarul unui ceas clasic, la ora h şi m minute?

Date de intrare
Fișierul unghi.in va conține pe prima linie un număr natural n, reprezentând numărul de probleme date ca temă, iar pe a doua linie, două numere h și m, separate printr-un spațiu, cu semnificațiile din cerință.

Date de ieșire
Fișierul unghi.out va conține pe câte o linie numărul de grade corespunzător unghiului format de orar și minutar, pentru fiecare dintre cele n probleme din temă.

Restricții și precizări

n este număr natural, 1≤n≤100
h este număr natural, 0≤h≤24
m este număr natural, 0≤m≤60
Dimensiunea unui unghi se măsoară în grade. Un cerc are 360 de grade.

Exemplu:
unghi.in

3
8 20
1 10
5 15
unghi.out

130
25
67.5
Explicație


Aşa cum se vede şi în figura de mai sus unghiul dintre orar şi minutar este de 130 grade pentru prima pereche de valori din fişierul de intrare. Asemănător se obţin şi celelalte valori corespunzătoare următoarelor perechi.

## Cod sursă C++

```cpp
#include <fstream>
#include <math.h>
using namespace std;
ifstream in("unghi.in");
ofstream out("unghi.out");
int main() {
    int n, h, m;
    float uh, um, u;
    in >> n;
    for (int i = 1; i <= n; i++) {
        in >> h >> m;
        h = h % 12;
        if (m == 60) {
            m = 0;
            h++;
        } uh = (h * 60 + m) * 0.5;
        um = 6 * m;
        if (uh > um) u = uh - um;
        else u = um - uh;
        if (u < 360 - u)
            out << u << "\n";
        else
            out << 360 - u << "\n";
    } return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1815)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1815/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1815/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
