پرسش و پاسخ در الگوریتم و فلوچارت

مهندسرحیمی

عضو جدید
یعنی چی 3 5 7 یعنی دوتا دوتا کم کنه
شروع
Nراازورودی بگیر
3- I-2بریز توی I
N-Iروبریز توی W
W روچاپ کن
اگر W>=0بروبه مرحله ی 3
پایان
اگه مشکلی داشتی با این شماره تماس بگیر کمکت کنم09137238491
 

mojdeh-eng

عضو جدید
کاربر ممتاز
راهنمایی:چطوری میشه 2 به توان nحالت را برایn متغییر پیاده سازی کرد؟؟

راهنمایی:چطوری میشه 2 به توان nحالت را برایn متغییر پیاده سازی کرد؟؟

سلام بردوستان...
من میخوام یه برنامه بنویسم که تو اون باید n متغیر از ورودی دریافت بشه و هرکدوم از متغیرها میتوانند true یا false باشند و باید 2 به توان n حالت برای این n متغییر حساب بشه واین مهمه که برنامه چطوری و از چه فرمولی میتونه این حالت راحساب کنه وما به هرکدوم از حالات دسترسی داشته باشیم...مثلا اگر تعداد ورودیها 2تا بود این 4 حالت به وجود میاد:
True
True
False
False
False
True
True
False





و همین طور برای 3و4و... n , انجام بشه...به نظر شما از چه راه حلی میشه استفاده کرد که هم کدش کوتاه باشه و هم خیلی سریع وراحت به جواب برسم...؟؟؟؟؟
 

آه باران

اخراجی موقت
یک روش، BackTrack به صورت بازگشتی است
کلیاتش به این صورت می تونه باشه که یه تابع با دو آرگومان Integer و Boolean تعریف کنید. به صورت بازگشتی تا زمانی که مقدار Intreger، یک نشده خود تابع رو فراخونی کنید، مثلا:

Function backTrack: Integer n, Boolean B
If n = 1 Return B
}Else
( (Print(B, backTrack(n-1, true
( (Print(B, backTrack(n-1, false
{​


پیاده سازی کد (شامل پیاده سازی تایع Print و نحوه ی چاپ کردن در آن) به عهده ی خودتون​
 

آه باران

اخراجی موقت
البته یه روش یه کم تقلب گونه هم به ذهنم رسید
کافیه برای هر N، اعداد باینری 0 تا 2 به توان N-1 رو تولید کنید، بعد همون اعداد رو از یه تابعی رد کنید که به جای 0، false و به جای 1ها true چاپ کنه!
مثلا وقتی N برابر 3 باشه، اعداد 000، 001، 010، 011، 100، 101، 110 و 111 رو تولید و هر عدد (رشته) رو موقع تولید به تابعی بفرستین که کار بالا رو انجام بده

پس کاری که باید بکنید اینه که یه for بزنید و در اون اعداد 0 تا 2 به توان N-1 (می تونید از (pow(2.0 , n-1 استفاده کنید) رو به صورت رشته ی باینری تولید و رشته ی ایجاد شده رو برای چاپ به یه تابع دیگه که خودتون بایذ بنویسید بفرسته
برای تبدیل عدد به رشته ی باینری می تونید از دومین پست در این صفحه استفاده کنید، فقط حواستون به این باشه که وقتی N شما 3 هست و شما می خواین 0 تا 7 رو باینری کنه، باینری عدد مثلا 2 رو به صورت 10 تولید می کنه، نه 010. پس شما در اون تابعی که قرار رشته ایجاد شده رو بگیره و true false چاپ کنه، ابتدا به اندازه ی اختلاف طول رشته از N، باید false چاپ کنه سپس رشته رو چاپ کنه
یعنی برای عدد 2 اول یک false چاپ کنه بعد 10 رو به صورت true false چاپ کنه

فکر کنم در 10 دقیقه بتونید کدش رو بزنید
 

mojdeh-eng

عضو جدید
کاربر ممتاز
البته یه روش یه کم تقلب گونه هم به ذهنم رسید
کافیه برای هر N، اعداد باینری 0 تا 2 به توان N-1 رو تولید کنید، بعد همون اعداد رو از یه تابعی رد کنید که به جای 0، false و به جای 1ها true چاپ کنه!
مثلا وقتی N برابر 3 باشه، اعداد 000، 001، 010، 011، 100، 101، 110 و 111 رو تولید و هر عدد (رشته) رو موقع تولید به تابعی بفرستین که کار بالا رو انجام بده

پس کاری که باید بکنید اینه که یه for بزنید و در اون اعداد 0 تا 2 به توان N-1 (می تونید از (pow(2.0 , n-1 استفاده کنید) رو به صورت رشته ی باینری تولید و رشته ی ایجاد شده رو برای چاپ به یه تابع دیگه که خودتون بایذ بنویسید بفرسته
برای تبدیل عدد به رشته ی باینری می تونید از دومین پست در این صفحه استفاده کنید، فقط حواستون به این باشه که وقتی N شما 3 هست و شما می خواین 0 تا 7 رو باینری کنه، باینری عدد مثلا 2 رو به صورت 10 تولید می کنه، نه 010. پس شما در اون تابعی که قرار رشته ایجاد شده رو بگیره و true false چاپ کنه، ابتدا به اندازه ی اختلاف طول رشته از N، باید false چاپ کنه سپس رشته رو چاپ کنه
یعنی برای عدد 2 اول یک false چاپ کنه بعد 10 رو به صورت true false چاپ کنه

فکر کنم در 10 دقیقه بتونید کدش رو بزنید
ممنون دوست عزیز ...
همه قسمتا رو متوجه شدم به غیر از اونجایی که نوشتی« برای هر N، اعداد باینری 0 تا 2 به توان N-1 رو تولید کنید»منظورتو متوجه نشدم میشه با مثال برام توضیح بدی؟؟؟راستی از کجا باید بفهمم که مثلاNبرابر3 باشه اعداد 0 تا 7 رو به باینری تبدیل کنم؟؟؟
 

آه باران

اخراجی موقت
اوکی
ببینید مثلا شما برای n برابر 3 شما می خواین تمام حالت های true، false رو تولید کنید. ما به جای true و false می خوایم با 0 و 1 کار کنیم
برای n = 3، این حالت ها رو داریم: 000، 001، 010، 011، 100، 101، 110، 111
که اگه توجه کنید می بینید که اعداد 0 تا 7 هستند. به همین ترتیب برای n = 4 هم اگر به صورت بالا بنویسید می بینید که اعداد 0000 تا 1111 یعنی 0 تا 15 تولید می شه
یعنی شما برای هر n، n تا رقم باینری دارید که همه ی اونها تولید می شند که کمترینشون می شه همشون 0 (یعنی 0) و بیشترینشون وقتی هست که همشون 1 هست (یعنی برابر با "2 به توان n" منهای 1
برای N = 3، از 0 باید تولید کنید تا 1-2[SUP]3 [/SUP]یعنی 7، برای N = 4 هم از 0000 تا 1111 یا از 0 تا 15

پس شما اعداد 0 تا 2 به توان N، منهای 1 رو به تابعی که لینکش رو دادم پاس می کنید و اون باینری اون رو بر می گردونه، مثلا شما می دید 4، خروجی اون می شه 100.
حالا شما باید یه تابع دیگه بنویسید که اون 100 رو بگیره و به صورت true false چاپش کنه. فقط اولش اگر لازم بود صفر اضافه کنه. چرا؟ فرض کنید که n سه هست و اعداد از 0 تا 7 را شما به تابع پاس می کنید، تابع بر خلاف انتظار شما، عدد 2 رو به صورت 10 بر می گردونه در حالی که شما می خواستین به صورت 010 برگردونه (چون N سه هست). پس به تابعی که قراره رشته ی باینری رو بگیره و true false چاپ کنه بگید که به اندازه اختلاف N از طول رشته false چاپ کنه. مثلا اگر N چهار باشه و 10 بهش پاس بشه، اون ابتدا دو تا false چاپ می کنه بعد true بعد false

read n from input
for i from 0 to 2^n -1
(string temp = decimal_to_binary(i
(myprint(temp, n

-------------------------------

(function myprint(string s, integer n
(for i form 0 to (n - length of s
(print("false"
for i form 0 to length of s
'if s(i) = '0
("print("false
else
("print("true​
 

♥@SH!M♥

کاربر حرفه ای
کاربر ممتاز
***ساخت یک درختmax-heap

***ساخت یک درختmax-heap

سلام به دوستان عزیز
کسی میتونه بگه با داشتن یه آرایه چه جوری میشه یه درخت maxheap ساخت....وبعد با استفاده از اون درخت آرایه رو مرتب کرد....
:que::que::que:
میخام الگوریتمو برام توضیح بدین...چون اصل قضیه رو میدونم...الگوریتمشو متوجه نمیشم..که چه جوری میشه نوشت!!!

پیشاپیش تشکر:gol:
 

♥@SH!M♥

کاربر حرفه ای
کاربر ممتاز
می تونی الگوریتمشو بذاری ؟



BUILD-MAX-HEAP(A)
1 heap-size=length[A]
2 for i=length[A]/2 downto 1
3 do MAX-HEAPIFY(A,i)


MAX-HEAPIFY(A,i)
1 l=LEFT(i)
2 r=RIGTH(i)
3 if(l≤heap-size[A] &&A[l[>A
4 then largest=l
5 else largest=i
6 if(r≤heap-size[A] && A[r]>A[largest]
7 then largest=r
8 if (largest≠i)
9 then swap(A,A[largest])
10 MAX-HEAPIFY(A,largest)

HEAPSORT(A)
1 BIULD-MAX-HEAP(A)
2 for(i=length [A] downto 2)
3 do swap(A[1],A)
4 Heap-size[A]=Heap-size[A]-1
5 MAX-HEAPIFY(A,1)

این کل مرتب سازیه هیپ هست...ساخت هیپ بعدم سورتش..البته این شبهه کده!!
ولی اگه میشه شما یه الگوریتم بهتر پیشنهاد کنین یا همینو واسم تشریحش کنین

باتشکر
 
آخرین ویرایش:

HH2BN1990

کاربر فعال
سلام به دوستان عزیز
کسی میتونه بگه با داشتن یه آرایه چه جوری میشه یه درخت maxheap ساخت....وبعد با استفاده از اون درخت آرایه رو مرتب کرد....
:que::que::que:
میخام الگوریتمو برام توضیح بدین...چون اصل قضیه رو میدونم...الگوریتمشو متوجه نمیشم..که چه جوری میشه نوشت!!!

پیشاپیش تشکر:gol:

این فایلی رو که ضمیمه کردم صفحه ی 215 تا 225 اش رو بخون هر کجاشو متوجه نشدی بپرس
 

پیوست ها

  • Sakhteman Dadeh.pdf
    2.2 مگایابت · بازدیدها: 0

جولی :)

عضو جدید
سلام دوستان خواهش میکنم جواب سوالای منم بدید
۱--الگوریتمی بنویسید که یک سکه۱۰۰ریالی را به سکه های ۵۰.۲۰..۵.۱۰.۲.۱.ریالی طوری خرد کند که
۱-تمام حالتهای ممکن را شامل شود
۲-تعداد سکه ها حداقل شود
۲-الگوریتمی بنویسید که تعدادی عدد را از ورودی خوانده و اعدادی که رقم ۷ در آنها وجود دارد را در خروجی چاپ کند
۳-الگوریتمی بنویسید که عددی را از ورودی خوانده مشخص کند که آیا آن عدد یک عدد متقارن است یا خیر؟(مثل۵۲۷۲۵)
 

زهرا3

عضو جدید
سلام .من برنامه مت لبشو برات بگم امیدوارم بهت کمک کرده باشمX=input('Enter the number')
i=2
while i<=X/2
if M=rem(X,i)=!0
i+1
end
f print f('the value of X:%f',x)
 

yaldi

عضو جدید
سلام دوستان میشه جواب این الگوریتم ها رو بهم بگید ممنونم
الگوریتمی بنویسید که کلیه مقسوم علیه های هر عدد را چاپ کند
الگوریتمی بنویسید که یک عدد را دریافت کند واول یا مرکب بودن آن ها را معین نماید
 

kh.mohandes

عضو جدید
سلام مهندس میشه منو راهنماییم کنی؟!لطفا؟!!
فلوچارتی رسم کنید که تمام اعداد اول کوچکتر از 25 را در خروجی چاپ کند.چی رو کجا باید 25=> بزارم؟
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
سلام مهندس میشه منو راهنماییم کنی؟!لطفا؟!!
فلوچارتی رسم کنید که تمام اعداد اول کوچکتر از 25 را در خروجی چاپ کند.چی رو کجا باید 25=> بزارم؟

با سلام،
نیاز به یه متغیر دارید که مقدارش از 2 تا 25 پیش می ره و هر بار گذر از حلقه ی شناسایی اعداد اول یکی بهش اضافه می شه و با رسیدن به 25 به پایان می ره! عددی اوله که به غیر از یک به هیچ عددی کوچکتر از نصف خودش بخش پذیر نباشه، (البته تا جذر خودش هم قابل قبوله) یعنی 13 اوله چون بر 2و3و4و5 بخشپذیر نیست که 2و3و4و5 کوچکتر از 6 هستن که نصف 13 می شه!
 

farzaneh_25

عضو جدید
سلام به همه
من 1هفته ست رو این سوالا دارم فکر میکنم اما به نتیجه نرسیدم.
قربونش برمم که توئئ هیچ کتاب برنامه نویسی +c هیچی راجش نزدن.
کسی میتونه کمکم کنه؟؟؟دعا گوش میشم

1.مجموع سری زیر را حساب کنید.
1،1،2،2،3،3،4،4،5،5،6،6،7،7،8،8،9،9،10،10

2.مجموع سری زیر را حساب کنید.
1،2،4،8،16،64،128،256،
 

mojdeh-eng

عضو جدید
کاربر ممتاز
سلام..... برای سوال دوم عدد2 به توان رسیده دیگه!!!! برای الگوریتمش یک counter بین صفر وهفت درنظربگیر تا وقتی که بین این محدوده اس،2 به توان counter برسه ودر یک result ریخته بشه....اینجوری.. result=0; for(i=0;i
 

mojdeh-eng

عضو جدید
کاربر ممتاز
سلام به همه من 1هفته ست رو این سوالا دارم فکر میکنم اما به نتیجه نرسیدم. قربونش برمم که توئئ هیچ کتاب برنامه نویسی +c هیچی راجش نزدن. کسی میتونه کمکم کنه؟؟؟دعا گوش میشم 1.مجموع سری زیر را حساب کنید. 1،1،2،2،3،3،4،4،5،5،6،6،7،7،8،8،9،9،10،10 2.مجموع سری زیر را حساب کنید. 1،2،4،8،16،64،128،256،
برای سوال اول هم میتونی یک counter بین یک و ده بگیری فقط موقع انجام عملیات جمع هر counterدو بار باید جمع بشه....اینجوری result=0; for(i=1;i
 

mojdeh-eng

عضو جدید
کاربر ممتاز
نمیدونم چرا کدهایی که گذاشتم نصفه میاد؟؟؟؟؟؟؟؟؟!!!!! اگه خودت نتونستی کدش رو بنویسی خبر بده برات بفرستمشون.............
 

farzaneh_25

عضو جدید
سلام به همه.
کسی میتونه کمکم کنه.من 1کمشو میدونم اما اجرا نمیده
c++ برنامه ای بنویسید که در خروجی این شکل را نمایش دهد. به زبان
1
121
12321
1234321
1234321
12321
121
1
 

robotnic

عضو جدید
سلام دوستان ...
جواب الگوريتمتبديل مبنا از 2 به مبنای 10 رو خيلی فوری می خوام ...
لطفا کمکم کنيد ...
ممنون
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
سلام دوستان ...
جواب الگوريتمتبديل مبنا از 2 به مبنای 10 رو خيلی فوری می خوام ...
لطفا کمکم کنيد ...
ممنون
با سلام،
متغیر توان رو صفر کنید!
حاصل جمع رو هم صفر کنید.
از راست به چپ عدد باینری هر جا 1 داشتید، حاصل جمع رو با 2 به توان متغیر توان جمع کنید. یکی به توان اضافه می کنید و رقم بعد رو بررسی کنید که یک هست یا نه!
 

ali-1980sm

عضو جدید
سلام به همه.
کسی میتونه کمکم کنه .الگوریتمی که نام ونام خانوادگی را گرفته و وارون آن را چاپ کند.و الگوریتمی که کارکتری را گرفته و تشخیص دهد آن کارکتر جز اعداد است یا حروف؟
 

♥@SH!M♥

کاربر حرفه ای
کاربر ممتاز
سلام به همه.
کسی میتونه کمکم کنه .الگوریتمی که نام ونام خانوادگی را گرفته و وارون آن را چاپ کند.و الگوریتمی که کارکتری را گرفته و تشخیص دهد آن کارکتر جز اعداد است یا حروف؟

سلام.
قسمت اول سوالتون میشه مربوط به اینکه ی رشته رو بصورت وارون چاپ کنه حالا این رشته میتونه اسم و فامیل یا هرچی دیگه باشه:

1.شروع
2.رشته رو دریافت کنه و در strقرار بده
3.طول رشته رو هم محاسبه کنه و درlnقرار بده
4.بعد تو یک حلقه ی کاهشی ک با تعداد همون ln شروع میشه و به اندازه ی همون ln هم تکرار میکنه به همراه ی شمارنده i اعمال زیر رو تا وقتی ک مقدار i ک همون ln هس 1بشه
5.داخل رشته ی str از موقعیت i به ب تعداد 1کاراکتر کپی کنه و در داخل یک رشته دیگ به اسم str1 قرار بده
6.مقدار str1رو حالا پشت هم چاپ کن
7.پایان
 

ali-1980sm

عضو جدید
سلام به همه.
کسی میتونه کمکم کنه . ا
لگوریتمی بنویسید که یک عدد در مبنای b را گرفته به مبنای 10 ببرد
.
الگوریتمی که کارکتری را گرفته و تشخیص دهد آن کارکتر جز اعداد است یا حروف.
 

jokerenemy

عضو جدید
سلام
ببخشید من کجا باید سوالام رو بپرسم؟
میشه به این ج بدید
الگوریتمی بنویسید که سه عدد را از ورودی گرفته، کوچکترین و بزرگترین عدد را به همراه پیغام مناسب چاپ کند؟
 

ali-1980sm

عضو جدید
کسی میتونه کمکم کنه . ا
لگوریتمی بنویسید که یک عدد در مبنای b را گرفته به مبنای 10 ببرد
.
الگوریتمی که کارکتری را گرفته و تشخیص دهد آن کارکتر جز اعداد است یا حروف.
 

ranjbarzadeh

عضو جدید
کسی میتونه کمکم کنه . ا

لگوریتمی بنویسید که یک عدد در مبنای b را گرفته به مبنای 10 ببرد
.

الگوریتمی که کارکتری را گرفته و تشخیص دهد آن کارکتر جز اعداد است یا حروف.

اول یک آرایه برای ذخیره عدد درست می کنیم و مقدار اولیه اش را صفر میدیم.میتونی آرایه رو محدود بگیری مثلا 8 رقم یا اینکه پویا تعریف کنی تا به اندازه عدد بشه تو این الگوریتم من i رو گرفتم اندیس آرایه و نام آرایه هم a در نظر گرفتم
1.شروع
2.مبنای مورد نظر را انتخاب کنید
3.اگر مبنا 2 بود برو به 5
4.اگر مبنا 16 بود برو به 7
5.عدد را بخوان و در آرایه قرار بده
6.از اندیس صفر آرایه شروع و تا آخرین خانه این کار را انجام بده(در حلقه)

7.عدد را بخوان و در آرایه قرار بده
8.اگر عناصر آرایه A تا F بود مقادیر 10 تا 15 را به آنها اختصاص بده
9.از اندیس صفر آرایه شروع و تا آخرین خانه این کار را انجام بده(در حلقه)

10.عدد را چاپ کن و در خروجی نمایش بده
 
بالا