Rezolvare completă PbInfo #1815 Unghi

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Unghi:

#include<fstream>
#include<math.h>
using namespace std;
ifstream f("unghi.in");
ofstream g("unghi.out");
int main()
{
    int n,h,m,i;
    float uh,um,u;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>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)
            g<<u<<endl;
        else
            g<<360-u<<endl;
        //u=fabs(uh-um);
        //g<<min(360-u,u)<<'\n';
    }
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1815 Unghi

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1815 Unghi de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!