انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#1
 سلام،
من شدیدا برای نوشتن الگوریتم این سوال دچار مشکل شدم
سوال:اولین عدد بین 1000 تا 10000 هزار را پیدا کنید که بر 845 بخش پذیر باشد و جمع اعداد عدد بدست آمده مورد نظر را بیابید.
ممنون میشم کمکم کنید.
فرضا اگه جوابش شد 1065 جمعش که میشه 12 رو بده.
پاسخ

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#2
سلام.
نیازی به الگوریتم پیچیده نیست، عدد 845 را در 1 و 2 و 3 و ... ضرب کنید (در یک حلقه for، با پارامتری برابر مقدار 1 تا مثلا 200)، سپس ببینید که چه زمانی از حد پایین (که اکنون برابر 1000 انتخاب شده)، بزرگتر است، آنگاه عدد حاصل ضرب، همان عدد مورد نظرمان است.
برای جمع زدن ارقام عدد، هر بار باقیمانده عدد بر عدد 10 را به دست می آورید و در یک حلقه for ، آن قدر تقسیم بر عدد 10 و محاسبه باقیمانده را ادامه می دهید تا تعداد رقم های آن پایان بیابد (در هر گام، ابتدا باقیمانده تقسیم بر 10 را به دست آورده و از عدد کم می کنید، بعد عدد را بر 10 تقسیم می کنید تا یک رقم حذف شود، دوباره باقیمانده بر 10 را حساب می کنید و ...)(باقیمانده ها را باید جمع بزنید تا بشود برابر جمع رقم ها).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#3
سلام.در صورت امکان برنامه مورد نظر این توضیحاتو بنویسید.باتشکر
پاسخ

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#4
(۱۳۹۳/۱۰/۰۶, ۱۱:۱۴ ب.ظ)'admin' نوشته: سلام.
نیازی به الگوریتم پیچیده نیست، عدد 845 را در 1 و 2 و 3 و ... ضرب کنید (در یک حلقه for، با پارامتری برابر مقدار 1 تا مثلا 200)، سپس ببینید که چه زمانی از حد پایین (که اکنون برابر 1000 انتخاب شده)، بزرگتر است، آنگاه عدد حاصل ضرب، همان عدد مورد نظرمان است.
برای جمع زدن ارقام عدد، هر بار باقیمانده عدد بر عدد 10 را به دست می آورید و در یک حلقه for ، آن قدر تقسیم بر عدد 10 و محاسبه باقیمانده را ادامه می دهید تا تعداد رقم های آن پایان بیابد (در هر گام، ابتدا باقیمانده تقسیم بر 10 را به دست آورده و از عدد کم می کنید، بعد عدد را بر 10 تقسیم می کنید تا یک رقم حذف شود، دوباره باقیمانده بر 10 را حساب می کنید و ...)(باقیمانده ها را باید جمع بزنید تا بشود برابر جمع رقم ها).



 


سلام.در صورت امکان برنامه مورد نظر این توضیحاتو بنویسید.باتشکر
 
پاسخ

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#5
در کلیدستان تنها راهنمایی می کنیم تا کاربران خودشان اقدام به کدنویسی کنند، ولی من کدهای بخشی از آن را ذکر می کنم و بقیه به عهده خودتان (چگونگی جمع زدن رقم های یک عدد) :

کد پی‌اچ‌پی:
clear all
close all
clc

number 
2531
sum
=0;
while(
number 0)
    
sum sum mod(number,10);
    
number = (number-mod(number,10)) / 10;
end
sum 

نتیجه اجرای کد متلب بالا :

کد پی‌اچ‌پی:
number =

        
2531


sum 
=

    
11 

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط s.saeid

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#6
(۱۳۹۳/۱۰/۰۸, ۰۸:۰۸ ب.ظ)'admin' نوشته: در کلیدستان تنها راهنمایی می کنیم تا کاربران خودشان اقدام به کدنویسی کنند، ولی من کدهای بخشی از آن را ذکر می کنم و بقیه به عهده خودتان (چگونگی جمع زدن رقم های یک عدد) :

کد پی‌اچ‌پی:
clear all
close all
clc

number 
2531
sum
=0;
while(
number 0)
    
sum sum mod(number,10);
    
number = (number-mod(number,10)) / 10;
end
sum 

نتیجه اجرای کد متلب بالا :

کد پی‌اچ‌پی:
number =

        
2531


sum 
=

    
11 



 


merc,mamnonSmile
 
پاسخ
 سپاس شده توسط admin

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#7
این دوستمون سواله جالبی پرسیدن
اگر امکان داشته باشه اقای ادمین یکمی راجب این کدی که نوشتین توضیح بدید که چطوری انجام میده؟
کد پی‌اچ‌پی:
number 2531
sum
=0;
while(
number 0)
    
sum sum mod(number,10);
    
number = (number-mod(number,10)) / 10;
end
sum 


تصمیم گرفتم با تحلیل کردن کدهای برنامه های ساده برنامه نویسی متلب را از مقدماتی به سطح متوسط یاد بگیرم
تا جایی که فهمیدم اینجوری متوجه شدم ببینید ایا درست میگم یا نه؟
ابتدا یک متغییر ثابت با نام sum تعریف میکنیم که مقداره اولیه شو صفر در نظر میگیریم بعد میگیم که اگه عدد ورودی مون مثبت بود (بزرگتر از صفر بود). یک sum جدید تعریف کنه و sum قبلی را به اضافه باقی مانده حاصل اون عدد ورودی بر 10 کنه
حالا سوال اولم اینه که چرا باقی مانده عدد ورودی مون تقسیم بر 10 میشه؟
همچنین اگه بشه خط بعدی شو شما بگید که منظورش چیه؟ ممنون میشم.

 

 

 
فهمیدن بهتر از دانستن است.
پاسخ
 سپاس شده توسط rezatotti

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#8
سلام
تا جایی که من متوجه شدم برنامه به این صورت است که:
عدد ما 2531 است و متغیری که حاصل جمع ارقام را در آن مینویسیم sum تعریف شده است.( البته نام این متغیر اشکال دارد زیرا متلب خود یک تابع به نام sum دارد). ابتدا مقدار آن را صفر تعریف میکنیم.
ما باید تاجایی پیش برویم که عدد ما + باشد.
سپس باقی مانده عدد بر 10 را محاسبه میکنیم که همان رقم سمت چپ عدد میشود ( بار اول 1) و بعد آن را با حاصل جمع قبلی جمع می کنیم. 
بعد باید عدد را اصلاح کنیم  یعنی رقم سمت راست آن را ازبین ببریم  برای این کار عدد را منهای باقی مانده آن بر 10  میکنیم (2530) سپس بر 10 تقسیم میکنیم.تا عدد 253 به دست آید و ذوباره تکرار میکنیم.
پاسخ
 سپاس شده توسط s.saeid ، rezatotti

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#9
بسیار تشکر میکنم از پاسختون
ولی میشه بگید چرا باید از دستور
کد پی‌اچ‌پی:
while(number 0
استفاده کنیم؟ منظورش اینه که تازمانی پیش باید بریم که عدد مثبت باشه
چرا ؟ منظورش از اینکه مثبت بشه چیه؟ مگه تقسیم یک عدد بر عدد منفی هم میشه؟

 
فهمیدن بهتر از دانستن است.
پاسخ

اولین عدد بین 1000 تا 10000هزار را پیدا کنید که بر 845 بخش پذیر باشد (در متلب)

#10
برای دستور while یا باید شرطی را ا در نظر بگیریم که میدانیم حتما از حلقه خارج میشود یا اینکه در درون آن از دستور break استفاده کنیم.
در این برنامه هنگامی که number به صفر برسد حالتی است که تمام رقم ها را با هم جمع کرده ایم در نتیجه 
[i]باید از حلقه خارج شویم و به دستورات دیگر بپردازیم.
در این جا به معنی + یا - بودن استفاده نمیشود!

 
پاسخ
 سپاس شده توسط s.saeid ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان