Informatică, întrebare adresată de nasta007, 9 ani în urmă

Se dau numerele naturale h m, reprezentând un ora curentă exprimată în ore şi minute. Să se determine care va fi ora peste x ore şi y minute.
Programul citește de la tastatură numerele h1 m1 x y.
Programul afișează pe ecran numerele h2 m2, separate printr-un spaţiu, cu semnificaţia din enunţ.
0 ≤ h1, h2 ≤ 23
0 ≤ m1, m2, y ≤ 59
0 ≤ x ≤ 10000

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
46
#include <iostream>
using namespace std;

int h1, m1, x, y;

int main()
{
    cin >> h1 >> m1 >> x >> y;
    cout << (h1 + (m1 + y) / 60 + x) % 24 << ' ' << (m1 + y) % 60 << '\n';
}

AntiEaglesDavids: ce-i cu tine ue? iara te grabesti ca disperatu :))
artur99: asa credeam si eu
artur99: am ramas la cache, nu am stat sa calculez
artur99: Mind's cache ;)
AntiEaglesDavids: nu inteleg ce vrei sa zici :))
artur99: nvm
artur99: eeh asa mai merge
artur99: 2 edit-uri? :)))
AntiEaglesDavids: no witnesses no crime bro
artur99: ;)
Răspuns de artur99
38
Deci, prima data explicatia
Ora initiala este:   h1:m1
prima si prima data adaugam cele y minute

deci m2=m1+y;
un exemplu(50+80 =>130, din aceste 130 de minute, trebuie sa lasam doar 10 la minute si sa punem 2 la ore)  Acele 10 minute le aflam asa: m2 = (m1+y)%60; iar cele 2 ore le aflam asa:  h2 = h1+(m1+y)/60;

acum la m2 avem minutul final, insa la h2 e posibil sa avem o ora peste 24, asta o putem rezolva foarte usor asa: h2=h2%24;

Deci ca asta ar fi algoritmul

int h1,m1,x,y,h2,m2;
cin>>h1>>m1>>x>>y;
m2 = (m1+x)%60;
h2 = h1+(m1+x)%60;
h2=h2%24;
cout<<h2<<" "<<m2;

Alte întrebări interesante