1. امیر علی
  2. برنامه‌نویسی و طراحی وب
  3. سه شنبه, 26 خرداد 1394
سلام. دوستان عدد آرمسترانگ عددی است که اگر هر رقم آن را به توان 3 برسانیم و با یدیگر جمع بزنیم عدد اولیه به دست می آید. من برای تشخیص این اعداد برنامه ای به زبان C++ نوشتم که متاسفانه با وجود این که ظاهرا از الگوریتم درستی پیروی می کند و حتی تریس آن نیز جواب درستی را به نمایش می گذارد، نتیجه ی ارائه شده توسط برنامه صحیح نمی باشد و برنامه به ازای هر عددی جواب می دهد "Armstrong Ast" حتی اگر آن عدد آرمسترانگ هم نباشد.
سورس برنامه به شکل زیر می باشد:

#include <iostream>
#include <cstring>

using namespace std;

int i,j,x,z,m;

int main(int argc, char** argv) {
cin>>i;
cout<<endl;
i=m;
while(i!=0){
j=i%10;
i-=j;
i/=10;
z+=j*j*j;
}
if(z==m){
cout<<"Armstrong Ast."<<endl;
}
else{
cout<<"Armstrong Nist."<<endl;
}
system("PAUSE");
return 0;
}


بنده از Do-While نیز استفاده کردم ولی متاسفانه به جواب نرسیدم. ممنون میشوم اگر راهنمایی ام کنید.
بهترین پاسخ
hani بهترین پاسخ Pending Moderation
2
رای
پس‌گیری
سلام
خوب مشکل اینه که حلقه اصلا اجرا نمیشه شما i رو از ورودی گرفتید بعد مقدار نامعلوم m رو ریختید توی i
برای همین i مقدار صفر رو میگیره و چون شرط حلقه برقرار نمیشه ، اصلا حلقه اجرا نمیشه که بخواد بررسی بشه این عدد حايز شرایط هست یا نه ، باید i = m باشه

http://uupload.ir/files/z8zw_screenshot_from_2015-06-16_18:09:11.png
http://8pic.ir/images/cey8vb6aw7055ns560f0.gif http://8pic.ir/images/gfwfnoz9vjfa5hrx260e.gif http://8pic.ir/images/5owjmdso9cy5avg3nsfb.gif http://8pic.ir/images/20gdy2z8wd2gzb25tqou.gif http://8pic.ir/images/53361nr7xhimv8xjqi1s.gif
امیر علی بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
hani wrote:

سلام
خوب مشکل اینه که حلقه اصلا اجرا نمیشه شما i رو از ورودی گرفتید بعد مقدار نامعلوم m رو ریختید توی i
برای همین i مقدار صفر رو میگیره و چون شرط حلقه برقرار نمیشه ، اصلا حلقه اجرا نمیشه که بخواد بررسی بشه این عدد حايز شرایط هست یا نه ، باید i = m باشه

http://uupload.ir/files/z8zw_screenshot_from_2015-06-16_18:09:11.png

خیلی ممنون. واقعا این بی دقتی هاست که کار آدمو خراب میکنه.
  • صفحه :
  • 1


هنوز پاسخی به این پست ارسال نشده است.
البته از آنجایی که هنوز در سایت لاگین نکرده‌اید، اجازه‌ی پاسخ دادن به این پست را ندارید.