[C] Obliczanie aktualnego biorytmu - czego użyć do daty?
Ostatnio zmodyfikowano 2013-02-20 23:02
artur179999 Temat założony przez niniejszego użytkownika |
[C] Obliczanie aktualnego biorytmu - czego użyć do daty? » 2013-02-01 17:00:25 Mam do napisania program o nazwie biorytm w języku c. Musi pobierać 2 daty i na tej podstawie określać w jakim cyklu człowiek akurat się znajduje. Od początkowej daty liczyć -23-dniowy - cykl fizyczny -28-dniowy - cykl psychiczny -33-dniowy - cykl umysłowy i od początku... cykl fizyczny,psychiczny,umysłowy itd Czy najprościej będzie użyć funkcji difftime? |
|
DejaVu |
» 2013-02-01 17:30:43 Chyba tak, bowiem difftime załatwi Ci prawidłowe policzenie dni przestępnych. |
|
artur179999 Temat założony przez niniejszego użytkownika |
» 2013-02-01 19:00:23 znalazłem program który oblicza różnice dni ale co zrobić by liczył jaki to cykl? #include <stdio.h> #include <stdlib.h>
typedef struct { int d, m, r; } data;
void pobierz_date( data * str ) { printf( "Dzien: " ); scanf( "%d", & str->d ); printf( "Miesiac: " ); scanf( "%d", & str->m ); printf( "Rok: " ); scanf( "%d", & str->r ); }
int rok_przestepny( int r ) { if(( r % 4 == 0 ) &&(( r % 400 == 0 ) ||( r % 100 != 0 ) ) ) return( 1 ); else return( 0 ); }
int ile_dni_w_roku( int r ) { int x = 0; if( rok_przestepny( r ) ) x = 366; else x = 365; return( x ); }
int ile_dni_w_miesiacu( int m, int r ) { int x = 0; switch( m ) { case 1: x = 31; break; case 2: if( rok_przestepny( r ) ) { x = 29; break; } else { x = 28; break; } case 3: x = 31; break; case 4: x = 30; break; case 5: x = 31; break; case 6: x = 30; break; case 7: x = 31; break; case 8: x = 31; break; case 9: x = 30; break; case 10: x = 31; break; case 11: x = 30; break; case 12: x = 31; break; default: x = 0; break; } return( x ); }
int ile_dni_od_poczatku_roku( data * str ) { int tmp_d; int tmp_m; int tmp_r; int tmp_x; int i; tmp_d = str->d; tmp_m = str->m; tmp_r = str->r; tmp_x = 0; for( i = 0; i < tmp_m; i++ ) { tmp_x = tmp_x +( ile_dni_w_miesiacu( i, tmp_r ) ); } tmp_x = tmp_x + tmp_d; return( tmp_x ); }
int ile_dni_do_konca_roku( data * str ) { int tmp_r; int tmp_x; tmp_r = str->r; tmp_x = 0; tmp_x = ile_dni_w_roku( tmp_r ); tmp_x = tmp_x - ile_dni_od_poczatku_roku( str ); return( tmp_x ); }
int dni_odstepu( data * str1, data * str2 ) { int tmp_r1; int tmp_r2; int tmp_x; int i; tmp_r1 = str1->r; tmp_r2 = str2->r; tmp_x = 0; for( i = tmp_r1; i <= tmp_r2; i++ ) { tmp_x = tmp_x + ile_dni_w_roku( i ); } tmp_x = tmp_x - ile_dni_od_poczatku_roku( str1 ); tmp_x = tmp_x - ile_dni_do_konca_roku( str2 ); return( tmp_x ); }
int main( int argc, char * argv[] ) { data D1, D2; data * dp, * dk; dp = & D1; dk = & D2; printf( "DATA POCZATKOWA\n" ); pobierz_date( dp ); printf( "DATA KONCOWA:\n" ); pobierz_date( dk ); printf( "Odstep: %d dni", dni_odstepu( dp, dk ) ); printf( "\n" ); system( "PAUSE" ); return 0; }
|
|
DejaVu |
» 2013-02-01 19:46:29 Skoro znalazłeś 'gotowca' to myślę, że temat można zakończyć. Do obliczenia cyklu wystarczy obliczyć resztę z dzielenia. |
|
artur179999 Temat założony przez niniejszego użytkownika |
» 2013-02-20 23:02:39 jak zapisać ifa? w 4 linijce od końca jest fragment do wypisywaniu liczby dni: (dp,dk) // nie wiem jak to umieścić w ifie |
|
« 1 » |