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

[C] Obliczanie aktualnego biorytmu - czego użyć do daty?

Ostatnio zmodyfikowano 2013-02-20 23:02
Autor Wiadomość
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?
P-75534
DejaVu
» 2013-02-01 17:30:43
Chyba tak, bowiem difftime załatwi Ci prawidłowe policzenie dni przestępnych.
P-75540
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?

C/C++
#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;
}
P-75551
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.
P-75563
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

C/C++
if( dp, dk ) % 23
{

P-76600
« 1 »
  Strona 1 z 1