Godziny otwarcia sklepu

0

Cześć,
dostałem jako zadanie napisanie dość prostego programu, który po podaniu czasu będzie wypisywał true jeżeli sklep jest otwarty lub false jeśli jest zamknięty. Sklep jest czynny od 10:30 włącznie do 18:30 wyłącznie. Jednak program nie działa tak jakbym chciał, a ja nie potrafię znaleźć błędu w kodzie. Po podaniu godziny 10:30 program wypisuje false, a po podaniu godziny 18:45 true ale już przy 19:00 wypisuje false.
Poniżej zamieszczam kod.

#include <iostream>
int main() {
int g, m;
std::cin >> g >> m;
double czas = g + m/60;
bool otwarty = (10.5 - czas) <= 0 && (10.5 - czas) > -8 ;
std::cout << std::boolalpha << otwarty << std::endl; }
0

Może napisz po ludzku if czas >= 10.5 && czas <= 18.5 W ogóle to bym poszukał czegoś do obsługi czasu w cpp.

0

Zapomniałem dodać, że mam napisać program bez użycia instrukcji wyboru, instrukcji warunkowej, ani operatora warunkowego oraz program nie załącza żadnych plików nagłówkowych poza iostream.

0

No to nie rób ifa tylko zrób tak jak masz tylko te warunki napisz tak jak ci podałem.

0

Zrobiłem Twoim sposobem i wciąż nie działa. Przy wpisaniu 10 30 program wyrzuca false, a przy 18 30 oraz 18 45 true ale przy 19 00 już false. Nie wiem czego jest to kwestią. Nierówności prawą poprawiłem oczywiście z <= na </

1

A no bo masz int a sprawdzasz zmiennoprzecinkowe liczby.

3

Po co bawisz się w liczby zmiennoprzecinkowe? Operuj na minutach.

#include <iostream>

using namespace std;

int main()
{
    int g, m;
std::cin >> g >> m;
int czas = g*60 + m;
bool otwarty = czas >=(10*60+30)  && czas <=(18*60+45);
std::cout << std::boolalpha << otwarty << std::endl; 
}
0

Bardzo dziękuję za pomoc. O przeliczeniu na minuty jakoś nie pomyślałem, a co do int to musiałem na zajęciach coś ominąć bo wydawało mi się, że skoro zmienna czas była typu double to już wystarczy. Najwyraźniej tak nie było.
Jeszcze raz piękne dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1