pekfos |
» 2010-03-01 20:06:54 np do wczytywania: 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: if( time >= conv_time( 8, 0 ) && time <= conv_time( 8, 45 ) ) cout << "matma!";
|
|
benRNZ Temat założony przez niniejszego użytkownika |
» 2010-03-01 22:17:04 Tak, umiem :) Dzieki za ten kod :) |
|
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): 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' ); } |
|
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ń |
|
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 ? |
|
Ush |
» 2010-03-04 14:45:15 zamień wprowadzoną godzinę na minuty i zrób przedziały typu: if( godzina < 420 ) cout << "nie ma jeszcze lekcji";
if( godzina > 419 ) &&( godzina < 466 ) { if( dzien == 1 ) cout << "Pierwsza lekcja - programowanie"; . . . } |
|
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 ? 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.";
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! :)"; |
|
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 if( min > 1200 ) cout << "koniec" << endl;
i tak dalej a co do dni, to zacznij już teraz. Po prostu dorób zmienną "day". int day = 0; string dzien; cin >> dzien; if( dzien == "poniedzialek" ) day = 1;
swith( day ) case 1 : case 2 :(...) i tak dalej (chyba za dużo powiedziałem ale reszte sam powinieneś zrobić) |
|
1 « 2 » 3 4 |