این رو امتحان کن و شاید دلیلش رو هم متوجه شدید
[PHP]x =10.0/100.0;[/PHP]
Printable View
این رو امتحان کن و شاید دلیلش رو هم متوجه شدید
[PHP]x =10.0/100.0;[/PHP]
با [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] موافقم چون اعداد 100 یا 10 رو کامپایلر بصورت صحیح در نظر می گیره ....نقل قول:
ولی من که از اول x رو float تعریف کرده بودم نه int!!!!!!!!نقل قول:
float مگه به معنی عدد اعشاری نیست؟!
یه سوال دیگه با اجازه...کسی میدونه تابع fflush تو C کارش چیه؟!
و همچنین EOF که تو loop معمولا میاد!!!
درودی دوباره بر دوستان!
من هر بار میخوام تو ++C دستور sqrt رو به کار ببرم، نمیشه!
میشه یکی بگه دقیقا چجوری باید به کار بردش؟ چه h فایلی رو باید زد؟
آخرین برنامه ای که میخواستم باهاش بنویسم اینه:
اشکالش چیه که نمیذاره؟
این Error هم میده:کد:#include<iostream>
usingnamespace std;
int main()
{
int a,j,i;
cout<<"What is the limit you want me to write prime numbers to?"<<endl;
cin>>a;
cout<<"2, ";
for (i=3;i<=a;i+=2)
{
double root=sqrt(i);
for (j=3;j<root;j+=2)
{
if (i%j==0)
cout<<j<<", ";
}
}
cin>>a;
}
sqrt: more than one instance of overloaded function "sqrt" matches the argument list
(البته به کدی که نوشتم توجه نکنین، هنوز روش کار نکردم و نمیدونم چی به چیه!
باید از math.h استفاده کنی!!! مشکلت حل مشهنقل قول:
در ضمن خط آخر هم return 0; نگذاشته شده!!
کلاس سوالات رفته بالا !!!!(شوخی کردم...) تابع fflush که گفتی یکی از بدترین خاطر های من نو زنده کرد چون این نکته کوچیک در ادامه به یک باگ بزرگ برای برنامم تبدیل شد اما من نمی فهمیدم و خیلی را حت سیستمم هکید!!!! .. نمی می خواستم جواب بدم!!!!! اما اون برای پاک کردن بافری که scanf متغیر ها رو داخل خودش ذخیره می کنه به کار می ره !!! لیلش هم اینه که وقتی شما با یک ورودی دومقدار رو میدی مثلا 1 3 رو دستور Scanf اول میاد مقادیر رو به بافر می ده و در دومین باری (یا حالا هر چند بار!!!) دیگه بیاز نداره که ببینه در ترمینال از کاربر بپرسه.... با همون مقدار 1 که در مثال اوردم کار رو ادامه می ده ..... EOF هم ماکرویی هست برای تست شرط پایان فایل به کار می رود وقتی که اشاره گر فایل به آخر برسه 1 در هر جایی 0 و در صورت وجود خطا 1- رو بر می گردانه.. فقط در dos و ویندوز کر برد داره به داخل unix و نه در حالت استاندارد سی استفاده می شه.نقل قول:
ببخشید بسیار میپرسم، ولی آخه هر سری انگار یه چیزی درست کار نمیکنه!
من کدمو کامل کردم:
همه چی درست کار میکنه به جز اونجاییش که cout<<counter ، یه عدد پرتی میده!کد:#include<iostream>
usingnamespace std;
int main()
{
double i;
int a,j,it,counter=4;
cout<<"What is the limit number you want me to write prime numbers to?"<<endl;
cin>>a;
cout<<"2, 3, 5, 7, ";
for (i=11;i<=a;i+=2)
{counter=counter+1;
it=i;
for (j=3;j<=sqrt(i);j+=2)
{
loop:
if (it%j==0)
break;
if (it%j!=0)
{
if (j<=sqrt(i))
{
j+=2;
goto loop;
}
else
cout<<i<<", ";
}
}
}cout<<counter;cin>>a;
return 0;
}
اول فکر کردم دو برابر اون عددی که باید بده رو میده ولی بعد فهمیدم نه!!!!!!!! ربطی به عددی که باید بده نداره!
ویرایش:
یه پرسش متفرقه؟ چرا کد ها اینجا یه کم قاطی پاتی میشه؟ یه راهی نیست که هم کد ها رو درست بذاریم هم اون space های قبلش رو بذاره؟منظورم Tab هاییه که تو Visual Studio هر مرحله یه مرحله بیشتر میشه!
من واقعا می دونم چه لزمی داره که بخوای متغیر counter رو تعریف کنی یعنی می خواستی تعداد دفعات اجرا شدن for اصلی رو بشماری ؟؟ اما به هر حال عدد پرتی نیست تعداد اجرا شدن حقله ی تکرار for اصلیه(اولیه) اما کلا درست نوشتی فقط یکم بی سلیقگی کردی که برای اینکه برنامه به خط بعدی بره در آخرش از cin استفاده کردی میتونستی به جاش cout<<endl بزارینقل قول:
همه چی درست کار میکنه به جز اونجاییش که cout<<counter ، یه عدد پرتی میده!
اول فکر کردم دو برابر اون عددی که باید بده رو میده ولی بعد فهمیدم نه!!!!!!!! ربطی به عددی که باید بده نداره!
نقل قول:
فک کنم اشتباه متوجه شدی!
اون counter که گذاشتم میخواستم به کاربر بگم که تا اون عددی که وارد کردی counter تا عدد اول هست، یعنی تعداد عدد اولایی که نوشته رو بهش بدم!
ولی شما درست میگی، جای اشتباه گذاشتمش، اینجوری تعداد همه ی اعداد فرد رو میشمره، نه فقط اولا!
سپاس!
اون cin>>a یی هم که گذاشتم، میذارم که برنامه خارج نشه!:sq_24: آخه برنامه هامو با Console32 مینویسم! D: ببخشید اگه بی سلیقگیه!