Na wejściu są informacje o dwóch chwilach w ciągu jednej doby podanych z dokładnością do godziny i minuty.algorytm powinien wyświetlać ile godzin i minut je dzieli.PILNE.pisać na [email protected] mam tu konto i dam max punktow.
Najpierw wypisze ci zmienne które potrzebuje użuwać aby w algorytmie nei pisać pełnych nazw:
H1 - pierwsza chwila pobrana godzina
M1 - pierwsza chwila pobrane minuty
S1 - pierwsza chwila pobrane sekundy
H2 - druga chwila pobrana godzina
M2 - druga chwila pobrane minuty
S2 - druga chwila pobrane sekundy
sek1 - wartość pierwszej chwili pobranej( godzina, minuty, sekundy) przelicznona na sekudny.
sek2 -wartość drugiej chwili pobranej( godzina, minuty, sekundy) przelicznona na sekudny.
x - róznaca pomiędzy jedną chwila a drugą w sekundach
H - godziny
M - minuty
S - sekundy
z- reszta sekund po obliczeniu godzin.
algorytm powinien wyglądać tak:
1. START
2. Pobranie H1,M1,S1 i H2,M2,S2.
3. Przeliczanie chwil na sekundy czyl:
sek1= H1 *3600 + M1*60 +S1
sek2= H2 *3600 + M2*60 +S2
4.Instrukcje warunkowe:
Jeżeli sek1>sek2 to
{
x=sek1-sek2;
}
Inaczej jeżeli sek1<sek2 to
{
x=sek2-sek1;
}
H=x/3600;
z=x-(3600*H);
M=z/60;
S=z-60*M;
wyświetl H:M:S;
5. KONIEC
Działa to oczywiście tylko wtedy gdy każdy z wyników obliczanych jest liczbą całkowitą, nie brane pod uwagę są wartości po przecinku i nie jest stosowane zaokrąglanie do góry.
przykład na liczbach:
pierwsza chwila 6:12:52
druga chwila 10:10:30
sek1=6*3600+12*60+52=22372
sek2=10*3600+10*60+30=36630
sek2 jest większe od sek1 więc
x=sek2-sek1=14258
H=14258/3600 = 3 bo nie biore nic po przecinku
z=14258-(3600*3)=3458
M=z/60=3458/60=57 bo nie biore nic po przecinku
S= z-60*M=3458-60*57=38
Czyli różnica pomiędzy pierwszą a drugą chwilą wynosi 3:57:38
Algorytm:
Wczytaj pierwszą godzinę: g1:m1;
Wczytaj drugą godzinę: g2:m2;
niech godzina1 = g1*60 + m1;
niech godzina2 = g2*60 + m2;
niech wynik = wartosc bezwgledna(godzina1 - godzina2);
niech pom = 0;
dopóki wynik > 60
{
zwiększ pom o 1;
zmniejsz wynik o 60
}
Wynikiem jest godzina: pom:wynik
pom - liczba godzin
wynik - liczba minut
Mogę to napisac w c/c++ jak chcesz.
Najpierw wypisze ci zmienne które potrzebuje użuwać aby w algorytmie nei pisać pełnych nazw:
H1 - pierwsza chwila pobrana godzina
M1 - pierwsza chwila pobrane minuty
S1 - pierwsza chwila pobrane sekundy
H2 - druga chwila pobrana godzina
M2 - druga chwila pobrane minuty
S2 - druga chwila pobrane sekundy
sek1 - wartość pierwszej chwili pobranej( godzina, minuty, sekundy) przelicznona na sekudny.
sek2 -wartość drugiej chwili pobranej( godzina, minuty, sekundy) przelicznona na sekudny.
x - róznaca pomiędzy jedną chwila a drugą w sekundach
H - godziny
M - minuty
S - sekundy
z- reszta sekund po obliczeniu godzin.
algorytm powinien wyglądać tak:
1. START
2. Pobranie H1,M1,S1 i H2,M2,S2.
3. Przeliczanie chwil na sekundy czyl:
sek1= H1 *3600 + M1*60 +S1
sek2= H2 *3600 + M2*60 +S2
4.Instrukcje warunkowe:
Jeżeli sek1>sek2 to
{
x=sek1-sek2;
}
Inaczej jeżeli sek1<sek2 to
{
x=sek2-sek1;
}
H=x/3600;
z=x-(3600*H);
M=z/60;
S=z-60*M;
wyświetl H:M:S;
5. KONIEC
Działa to oczywiście tylko wtedy gdy każdy z wyników obliczanych jest liczbą całkowitą, nie brane pod uwagę są wartości po przecinku i nie jest stosowane zaokrąglanie do góry.
przykład na liczbach:
pierwsza chwila 6:12:52
druga chwila 10:10:30
sek1=6*3600+12*60+52=22372
sek2=10*3600+10*60+30=36630
sek2 jest większe od sek1 więc
x=sek2-sek1=14258
H=14258/3600 = 3 bo nie biore nic po przecinku
z=14258-(3600*3)=3458
M=z/60=3458/60=57 bo nie biore nic po przecinku
S= z-60*M=3458-60*57=38
Czyli różnica pomiędzy pierwszą a drugą chwilą wynosi 3:57:38