ورود

View Full Version : مشکل این برنامه؟



gole.shabbu8
یک شنبه 23 فروردین 1394, 00:48 صبح
سلام
مشکل این برنامه رو چطوری میشه حل کرد؟
یه سوال اونم اینکه میشه توی شریط if بین یک عدد اعشاری و یک عدد صحیح دو مساوی (==) گذاشت؟
مثل اینجا که نوشته if(I==sqrt(adad)) این شرط باعث میشه هم برای ۹ و هم برای ۴ هر دوتا cout هم داخل حلقه و هم بیرون حلقه اجرا بشن. برنامه رو که اجرا می کنم اجرا مییشه ولی خطا نمیگیره و لی یه عدد مثل ۱۳ یا ۵ یا ۶۱ و .... که عدد اول هستن میزنم گیج میزنه و چیزی نمینویسه !‌چرا؟
خب شد چهارتا تا سوال که اساتید در صورتی که امکانش هست لطف کنن جواب بدن
1. دو مساوی بین عدد اعشاری و عدد صحیح در شرط if
2. اصلا میشه در به غیر از شرط ها از دو مساوی (==) استفاده کرد ؟
3. چرا همون طور که بالا اشاره کردم گیج میزنه؟
4 . بدون تغییر توی ساختار اصلی برنامه چه شرطی بزاریم یا کاری بکنیم که درست شه. البته سه تا راه حل میدونم برای اینکه یک عدد اول هست یا نه ولی میخوام یاد بگیرم از شما دوستان که عیب این برنامه چیه. با تشکر


130258

Azar.099
یک شنبه 23 فروردین 1394, 17:08 عصر
برای درست کردن برنامت به جای اینکه در اخر i را چک کنی همون متغیر maloomshodavalnist را چک کن
اگر مخالف یک بود میشه اول
از برابری در غیر از شرط ها مثلا کجا استفاده بشه ؟

mohammad0773
چهارشنبه 26 فروردین 1394, 00:54 صبح
دوست عزیز سلام
شما برای اول بودن عددتون هیچ برنامه ای طرح نکردید :متفکر: یعنی فرض کنید 3 رو وارد کردید درون حلقه چیزی چاپ نمیشه و بعد از اتمام حلقه یه شرط اجرا میشه که شما تو حلقه و شرط دستوری برای اول بودن تعیین نکردید
راه درستش اینه که if بیرون حلقه رو حذف کنید و بجاش بنویسید:

if(maloomshodavvalnist !=1){
cout<<"adad aval hast"<<endl;
}

اینطوری برای عدد اول مینویسه:adad aval has ،در ضمن زیاد توی چیز های مبتدی تشخیص اعداد اول نمون و سعی کن طول دانش زبانیتو زیاد کنی.
آیا میشه از == توی جاهای دیگه ای استفاده کرد؟نه خیر چون عملگر == آزمایش مساوی بودن رو انجام میده و جای دیگری کاربرد نداره