Strefa czasowa w c++

Strefa czasowa w c++
JU
  • Rejestracja:około 4 lata
  • Ostatnio:ponad 2 lata
  • Postów:7
0

Co muszę poprawić w programie, aby zamiast wskazywać wartość ujemną, wskazywało wartość dodatnią (godzinę)?
Tylko proszę bez żadnych skomplikowanych funkcji, musi być tak na poziomie 1 liceum (informatyka rozszerzona).

Kopiuj
#include <iostream>
using namespace std;
int godz_nj(int g) {
return(g-6)%24;
}
int main() {
cout << godz_nj(18) << endl;
cout << godz_nj(2) << endl;
return 0;
}
edytowany 3x, ostatnio: Julciax
Tasmanian Devil
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.9999946)
B4mbus
Przyrzekłbym, że robiłem kiedyś dla kogoś dokładnie takie samo zadanie
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
1

Nie rozumiem. W jaki sposob ma dzialac to mapowanie? To jest godzina w Nowym Jorku (nj) czy jak?

Jesli o to wlasnie chodzi no to zrob tak jak robisz sobie w glowie. Jesli odejmiesz te 6h i wychodzi liczba wieksza rowno 0 no to wszystko jest git. Jak wychodzi cos ujemnego to znaczy, ze jest godzina |wynik| przed polnoca.

Kopiuj
h = g - 6
if h < 0: h = 24 + h

λλλ
edytowany 4x, ostatnio: stivens
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:20 dni
3
Kopiuj
#include "tz.h"
#include <iostream>

int
main()
{
    using namespace std::chrono;
    std::cout << date::make_zoned("Asia/Singapore", system_clock::now()) << '\n';
}

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 4 godziny
4

Dragon podał overkill-a, a generalnie chodzi o to, że dzielenie liczb całkowitych zaokrągla w stronę zera (więc reszta dla ujemnych jest troszkę inna, niż oczekuje).
Więc najprostsza poprawka (nie uogólniona), to po prostu:

Kopiuj
int godz_nj(int g) {
    return (g + 24 - 6)%24;
}

overkill w wersji standardowej:

Kopiuj
int godz_nj(int g) {
    std::tm t{};
    t.tm_hour = g - 6;
    std::mktime(&t);
    return t.tm_hour;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.