PDA

View Full Version : برنامه تاریخ تولد با کلاس ها



vbiman
جمعه 23 اردیبهشت 1390, 18:16 عصر
با سلام
من مساله زیر رو حل کردم و برنامه اش رو با Class نوشتم ولی برحسب ثانیه فقط جواب میده ولی دوستانم میگن جواب نهایی اشتباه هستش میشه کمکم کنین تا کد رو اصلاح کنم .
مساله :برنامه‌ای بنویسید که سال تولد کاربر و سال فعلی را از ورودی خوانده، مشخص کند که او چند سال، چند ماه، چند روز، چند ساعت، چند دقیقه و چند ثانیه عمر کرده است. اینم کدی نوشتم :

#include <iostream.h>
#include <conio.h>
class time {
public:
void stime();
// void setTime(int, int, int);
// void printMilitary();
// void printStandard();
private:
int h;
int m;
int s;
};
//********************

void time::stime( )
{
int yn,mn,dn,yb,mb,db;
int tashkhiseMah,btashkhiseMah;

cout<<"enter Year(y)/Month(m)/Day(d) now:";
cin>>yn>>mn>>dn;

cout<<"Now, enter Year(y)/Month(m)/Day(d) of your birthday:";
cin>>yb>>mb>>db;

int year=yn-yb;
int TkabiseKabise=year/4;

int SalToSec=(((year*365)+TkabiseKabise)*24);
cout<<"\n"<<SalToSec;
//0000000000000000000000000000
if(mn<=6){tashkhiseMah=31;}else if(mn>6 && mn<12){tashkhiseMah=30;} else if(mn==12){tashkhiseMah=29;}else{cout<<"Error to reciceve month!!";};
int monthNow=((mn*tashkhiseMah)*24);
if(mb<=6){btashkhiseMah=31;}else if(mb>6 && mb<12){btashkhiseMah=30;} else if(mb==12){btashkhiseMah=29;}else{cout<<"Error to recice month!!";};
int monthBirthday=((mb*btashkhiseMah)*24);

int MonthToSec;
if(monthNow>=monthBirthday){
MonthToSec=monthNow-monthBirthday;}
else{
MonthToSec=monthBirthday-monthNow;
cout<<"\n"<<MonthToSec;
}
//0000000000000000000000000000
int dayNow=(dn*24);
int dayBirhday=(db*24);
long int SecToSec;
if(dayNow>=dayBirhday){
SecToSec=dayNow-dayBirhday;}
else{
SecToSec=dayBirhday-dayNow;
}
cout<<"\n"<<SecToSec;
//Total Secound of your birthday

long int p=SalToSec+MonthToSec+SecToSec;
long int SecoundBirthday=p*3600;
cout<<"\nYour Date of birthday to secound: "<<SecoundBirthday;

}
//**************
int main()
{
clrscr();
time t1;
t1.stime();
getch();
return 0;
}

[Smile]
یک شنبه 25 اردیبهشت 1390, 02:49 صبح
سلام
من این برنامه رو نوشتم که البته سطحش از برای شما خیلی پایینتره و با گرفتن تاریخ تولد و تاریخ روز، مشخص میکنه که شخص چند روز عمر داره، البته نکته مهم توی این برنامه حساب کردنه سال کبیسه بصورت کاملا دقیقه و از این جهت مقدار روزی که میده نسبتا دقیقتره
من با دوستام زیاد تستش کردیم و خطایی توش ندیدیم، بازم اگر شما هم یه تستی بزنید ممنون میشم :D
#include <conio.h>
#include <stdio.h>
main()
{
int x,yt,ya,mt,ma,dt,da,k,xt,y;
char z;
do{
printf("\nEnter Full birth Year:");
scanf("%d",&yt);
printf("\nEnter birth Month:");
scanf("%d",&mt);
printf("\nEnter birth Day:");
scanf("%d",&dt);
printf("\nEnter Fulll today Year:");
scanf("%d",&ya);
printf("\nEnter today Month:");
scanf("%d",&ma);
printf("\nEnter today Day:");
scanf("%d",&da);
if(ma>=mt)
x=365*(ya-yt)+30*((ma-1)-mt)+((30-dt)+da);
else
x=365*((ya-1)-yt)+365-30*((mt-1)-ma)-((30-da)+dt);
if(ma!=mt){
if(mt>=7){
if(ma<=7)x=x+(ma-2);
}
else{
if(ma<=6)x=x+(ma-mt);
else
x=x+(7-mt);}
}
printf("\nyour kabiseh years is:\n(");
k=0;
for(xt=yt;xt<ya;++xt){
y=xt%33;
switch(y){
case(1):
case(5):
case(9):
case(13):
case(17):
case(22):
case(26):
case(30): ++k;
printf("%d-",xt);}
}
printf("\b)");
printf("\n");
x=x+k;
printf("\nyou had %d years kabiseh in your lifetime",k);
printf("\nyour age is: %d days\n",x);
printf("\n\n\t\tDo you want repeat?(y/n)");
z=getche();}
while(z=='y');
}

[Smile]
یک شنبه 25 اردیبهشت 1390, 02:57 صبح
راستی یه چیزی
من میخوام تو این برنامه از clrscr استفاده کنم، ولی هربار میزنمش ارور میده:متفکر:، من از ویژوال 2008 استفاده میکنم، میتونید کمکم کنید :افسرده:

milad.kian
یک شنبه 25 اردیبهشت 1390, 08:55 صبح
system("cls");

از کد cls میتونی استفاده کنی !

[Smile]
یک شنبه 25 اردیبهشت 1390, 11:07 صبح
خیلی خیلی ممنون:تشویق: