مشکل با حلقه ی بینهایت

emad_67

Member
من یه برنامه با vc++ نوشتم که میاد زمان رو از کاربر می پرسه و و مثل یه ساعت کامپوتری شوع به کار میکنه ولی چون توش از حلقه ی بینهایت استفاده کردم باعث میشه که cpu صد در صد پر بشه حالا می خوام ببینم راهی هست برای رفع ای مشکل
اینم کدش:
کد:
#include<iostream.h>
#include<time.h>
class Time
{
public:
 Time(int=0,int=0,int=0);
 void set();
private:
 void print();
 int hr,min,sec;
 int year,month,day;
};
Time::Time(int a,int b,int c)
{
 hr=a;
 min=b;
 sec=c;
}
void Time::set()
{
 sec++;
 if(sec==60)
 {
  sec=0;
  min++;
 }
 if(min==60)
 {
  min=0;
  hr++;
 }
 if(hr==25)
  hr=0;
 print();
}
void Time::print()
{
 cout<<flush;
 cout<<"\r"<<(hr>=0 && hr<13 ? hr : hr%12)
  <<":"<<(min>0 && min<60 ? min : min%60)
  <<":"<<(sec>0 && sec<60 ? sec : sec%60)
  <<" "<<(hr>12 ? "PM" : "AM");
}
void main()
{
 int h,m,s,p,q;
 cout<<"enter hour,minute,second:";
 cin>>h>>m>>s;
 Time t(h,m,s);
 q=time(0)+1;
 for(;;)
 { 
  p=time(0);
  if(p==q)
        {
   p=q;
   q=time(0)+1;
   
   t.set();
  }
 }
}
 

_safir187

New Member
سلام من safir187 هستم! (نه _safir187)
چون دیدم دوستان تو انجمن فلش و سویش سوال پرسیدن این یوزر رو ساختم که جواب بدم. آخه یوزرم ظاهرا یه مشکلاتی داره...

خوب چه لزومی داره از حلقه ی بینهایت استفاده کنید؟
 

arash_j13

Member
اگه می خوایید ساعت بسازید خب پروسه رو یه ثانیه بخوابونید بعد از یک ثانیه یکی به ثانیه اضافه کنید و بعد دو باره هیمن کار ور یکنید تا درصد استفاده از Cpu کاهش پیدا کنه
 

emad_67

Member
اگه می خوایید ساعت بسازید خب پروسه رو یه ثانیه بخوابونید بعد از یک ثانیه یکی به ثانیه اضافه کنید و بعد دو باره هیمن کار ور یکنید تا درصد استفاده از Cpu کاهش پیدا کنه
اگه میشه لطف کنید بگید من چه جوری ای کار رو بکنم اگه دستور خاصی نیار داره همراه با هدر اون معرفی کنید
 

arash_j13

Member
از Windows API استفاده کنید تابع sleep پارمترش رو میلی ثانیه می گیره البته بهتره برای اینکه دقیق تر در بیاد دقیقا هزار میلی ثانیه در نظر نگیرد چون اول ویندوز ریل تایم نیست پس ممکنه کمی اشتباه کنه دوما شما یه سری دستور که اجرای اونها زمان می بره برای همین یکمی کمتر در نر بگیرید خطا کمتر می شه البته مقدارش تجربی هست و ممکنه از یه سیستم به سیستم دیگه کمی فرق کنه ولی فرق در شبانه روز خیلی زیاد نمی شه شاید در حد چند ثانیه
 

emad_67

Member
من با Api کار نکردم میشه لطف کنید خودتون این تابع رو رو برنامم اضافه کنید تا شاید سر در بیارم
یا یه آموزشی چیزی معرفی کنید تا من یا یاد بگیرم
 

جدیدترین ارسال ها

بالا