Aplikacja biorytm w wersji konsolowej na zaliczenie dla studenta informatyki napisana w c++
Poniżej udostępniam także kod źródłowy tego programu
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
long mc[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
long double PI_2=3.141592654*2;
void clrscr(void)
{
cout<<endl<<endl<<endl;
};
long ilednirok(int rok)
{ if ( rok%4==0 && rok%100==0 && rok%400==0 ) return(366);
if ( rok%4==0 && rok%100!=0) return(366);
return(365);
};
long policzdni(int r,int m,int d)
{ long dni=0;
int a;
for(a=1;a<r;a++) dni=dni+ilednirok(a);
for(a=1;a<m;a++) dni=dni+mc[a];
dni=dni+d;
return(dni);
};
int main(int argc, char *argv[])
{
int r,m,d,rb,mb,db;
long tmp,dnipour=0;
double tend_int,intelektualny,tend_emo,emocjonalny,tend_fiz,fizyczny;
char znak;
ptl:
clrscr();
cout<<endl<<"BIORYTMY"<<endl<<endl;
cout<<"Podaj date urodzin (np.1999.10.2):"<<endl;
cout<<"Rok=";
cin>>r;
if(r<0) goto ptl;
cout<<"Miesiac=";
cin>>m;
if(m<1 || m>12) goto ptl;
cout<<"Dzien=";
cin>>d;
if(m==2)
{ if(ilednirok(r)==366) tmp=29;
else tmp=28;
}
else tmp=mc[m];
if(d<1 || d>tmp) goto ptl;
cout<<"Podaj date biorytmu (np.1999.10.2):"<<endl;
cout<<"Rok=";
cin>>rb;
if(rb<0) goto ptl;
cout<<"Miesiac=";
cin>>mb;
if(mb<1 || mb>12) goto ptl;
cout<<"Dzien=";
cin>>db;
if(mb==2)
{ if(ilednirok(rb)==366) tmp=29;
else tmp=28;
}
else tmp=mc[mb];
if(db<1 || db>tmp) goto ptl;
clrscr();
do
{ cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"Data urodzin : "<<r<<"."<<m<<"."<<d<<endl;
cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"Biorytm na dzien : "<<rb<<"."<<mb<<"."<<db<<endl;
dnipour=policzdni(rb,mb,db)-policzdni(r,m,d);
cout<<"Przezytych dni : "<<dnipour<<endl;
if(dnipour<=0) goto ptl;
tend_int=(long double)PI_2*((long double)(dnipour%33)/(long double)33);
intelektualny=sin((long double)tend_int)*(long double)100;
tend_emo=(long double)PI_2*((long double)(dnipour%28)/(long double)28);
emocjonalny=sin((long double)tend_emo)*(long double)100;
tend_fiz=(long double)PI_2*((long double)(dnipour%23)/(long double)23);
fizyczny=(long double)sin((long double)tend_fiz)*(long double)100;
cout<<"Stan Intelektualny :"<<(int)intelektualny<<endl;
cout<<"Stan Emocjonalny :"<<(int)emocjonalny<<endl;
cout<<"Stan Fizyczny :"<<(int)fizyczny<<endl;
cout<<endl<<"ESC-koniec P-poprzedni dzien N-nastepny dzieä ENTER-nowy biorytm";
do
{ znak=getch();
}while(znak!=27 && znak!=13 && znak!='P' && znak!='p' && znak!='N' && znak!='n');
if(znak==13) goto ptl;
if(znak=='P' || znak=='p')
{ cout<<endl;
if(db!=1)
{ db--;
continue;
};
if(mb!=1)
{ mb--;
db=mc[mb];
if(mb==2)
{ if(ilednirok(rb)==366) db=29;
else db=28;
};
continue;
};
rb--;
mb=12;
db=mc[12];
continue;
};
if(znak=='N' || znak=='n')
{ cout<<endl;
if(db!=mc[mb] && mb!=2)
{ db++;
continue;
};
if(db!=29 && mb==2 && ilednirok(rb)==366)
{ db++;
continue;
};
if(db!=28 && mb==2 && ilednirok(rb)==365)
{ db++;
continue;
};
if(mb!=12)
{ mb++;
db=1;
continue;
};
rb++;
mb=1;
db=1;
continue;
};
}while(znak!=27);
return EXIT_SUCCESS;
}