Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przedział czasu - jaka formuła to zapisac?

Ostatnio zmodyfikowano 2010-03-13 09:07
Autor Wiadomość
pekfos
» 2010-03-01 20:06:54
np do wczytywania:
C/C++
string t;
getline( cin, t );
bool co = false;
int h = 0, m = 0;
for( int a = 0; a < t.length(); a++ ) {
    if( t[ a ] = ':' ) {
        co = true;
        continue;
    }
    if( co ) m = m * 10 +( int ) t[ a ] - 48;
    else h = h * 10 +( int ) t[ a ] - 48;
   
}
int time = 60 * h + m;

ify chyba umiesz obsługiwać. warunki zatem sam możesz
napisać

np:
C/C++
if( time >= conv_time( 8, 0 ) && time <= conv_time( 8, 45 ) ) cout << "matma!";

P-14452
benRNZ
Temat założony przez niniejszego użytkownika
» 2010-03-01 22:17:04
Tak, umiem :)
Dzieki za ten kod :)
P-14485
Elaine
» 2010-03-01 22:55:10
A mogę wiedzieć, po co tam jest to 48 i dlaczego używasz chamskiego rzutowania, skoro konwersja zachodzi niejawnie? I czemu to w ogóle wygląda syfiato, a nie jakoś tak (acz ciągle nie idealnie - np. jakaś obsługa błędów by się przydała):
C/C++
int i = 0, h = 0, m = 0;
for(; i < str.size() && str[ i ] != ':'; i++ )
{
    h =( h * 10 ) +( str[ i ] - '0' );
}
i++;
for(; i < str.size(); i++ )
{
    m =( m * 10 ) +( str[ i ] - '0' );
}
P-14486
Geno
» 2010-03-02 22:32:59
Jeśli zależy Ci na tym, aby nie używać time.h itp. żeby użyć prostych instrukcji to zrób tak:

najpierw dwie zmienne hour i min. Wpisujesz im jakąś wartość.

Najpierw musisz wogóle sprawdzić czy dobrze wpisano.
Jeśli liczba minut jest większa lub równa 60 to zwiększ godzine o 1 oraz minuty zmniejsz o 60.
Ponieważ jeśli wpiszesz 500 to wyjdzie Ci 1:420 (godzina także niemożliwa) trzeba to zapętlić do czasu kiedy minuty będą mniejsze niż 60.

Czy całość poprzednia wzieła w łeb, bo wystarczy zrobić tak:
Dopuki minuty są większe od 60 to:
do godzin dodaj 1.
od minut odejmim 60.

Czyli będzie teraz czas zrobiony ok.
Ale jeśli godzina wyjdzie 25:00? Też niemożliwa. Dlatego robimy kolejną pętle.
Dopuki godziny są większe od 24:
Od godzin odejmij 24.

Ale co jeśli podana zostanie wartość na minusie?
Sory że dręcze rozwiązywaniem błędów, ale to pomoże potem.
Co do wartości minusowych to jeszcze przed pierwszą pętlą trzeba wtrącić:
Jeśli godziny są mniejsze od zera to pomnóż je przez -1;
Jeśli minuty są mniejsze od zera to pomnóż je przez -1;

I teraz mamy już czas genialnie zrobiony.


Teraz mi napisz, czy to program dla jednego dnia czy dla całego tygodnia? Chodzi mi o to czy masz wpisać jeszcze np czy to poniedziałek czy wtorek, czy może chodzi tylko o jeden dzień
P-14549
benRNZ
Temat założony przez niniejszego użytkownika
» 2010-03-03 17:44:12
Dobrze by bylo na caly tydz :)
Ale najpierw sie martwie nad jednym dniem, jesli podolam temu, to na kolejne, np bym zrobil, ze juz na stracie wpisywalo by sie dzien tygodnia.

No dobrze, a co jesli lekcja 5 trwa od(np) 9:45 - 10:30, czy to zadziala co napisales jesli podam godzine 9:58 lub 10:11 zeby ta sama lekcje wyswietlalo ?
P-14582
Ush
» 2010-03-04 14:45:15
zamień wprowadzoną godzinę na minuty i zrób przedziały typu:
C/C++
if( godzina < 420 ) cout << "nie ma jeszcze lekcji"; //420 - 7h*60min

if( godzina > 419 ) &&( godzina < 466 )
{
    if( dzien == 1 ) cout << "Pierwsza lekcja - programowanie";
   
    .
    .
    .
}
P-14600
benRNZ
Temat założony przez niniejszego użytkownika
» 2010-03-04 21:58:29
Tak to zrobilem, wiem ze nie chlujnie..
Jak zrobic na kolejne dni, tzn co dac zeby na poczatku mozna bylo juz zdeklarowac o jaki dzien nam chodzi ?
C/C++
do
{
    cout << "Podaj godzine "; cin >> godz;
    cout << "Podaj minuty "; cin >> min;
    if( min > 60 || godz > 24 )
         cout << "Blad! Nie ma takiej godziny, jeszcze raz.\n\n\n";
   
}
while( min > 60 || godz > 24 );

godz = godz * 60;
czas = godz + min;

if( czas < 480 )
     cout << "Nie masz jeszcze lekcji, do lekcji zostalo Ci " << 480 - czas << " minut/y."; //420 - 7h*60min

if( czas >= 480 && czas < 525 )
     cout << "\n Historia, sala: 42\n lekcja skonczy sie za " << 525 - czas << " minut/y.";

if( czas >= 525 && czas < 535 )
     cout << "\n Przerwa (10min),\n nastepna: j.polski, sala: 41\n lekcja zacznie sie za " << 535 - czas << " minut/y.";

....
....
if( czas > 915 )
     cout << "Jestes juz po lekcjach! :)";
P-14629
Geno
» 2010-03-06 14:09:27
nie, nie, nie. Podajesz godzine, ale przydałoby się żeby nie operować na dwóch zmiennych (godzinie i minutach).

1 godzina (jak ktoś tutaj już napisał) == 60 minut

10 godzin == 600 minut.

Zmieniasz wpisaną godzinę na same minuty.

Potem tylko wpisujesz
C/C++
if( min > 1200 ) cout << "koniec" << endl;

i tak dalej

a co do dni, to zacznij już teraz. Po prostu dorób zmienną "day".

C/C++
int day = 0;
string dzien;
cin >> dzien;
if( dzien == "poniedzialek" ) day = 1; //aby nie operować na słowach zmieniasz słowo na cyfre

//potem dajesz:

swith( day )
case 1
: // plan dla pierwszego dnia case 2
:(...)
i tak dalej (chyba za dużo powiedziałem ale reszte sam powinieneś zrobić)
P-14666
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona