fbpx

Problema #1815 – Unghi – Rezolvari PBInfo

de Mihai-Alexandru

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.

#include <bits/stdc++.h>

using namespace std;

ifstream cin("unghi.in");
ofstream cout("unghi.out");

int main()
{
    int n;
    cin >> n;
    int h , m;
    for(int i = 0 ; i < n ; ++i)
    {
        cin >> h >> m;
        double rez1=0 , rez2=0;
        h%=12;
        rez1=h*30;
        rez2=m*6;
        double proc=0;
        proc=(double)60/m;
        rez1+=(double)30/proc;
        if(abs(rez1-rez2)>180)
        cout << 360-abs(rez1-rez2) <<endl;
        else
        cout << abs(rez1-rez2) <<endl;
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa