====== کدنویسی ====== تابعی بنویسید که یک ''‎+vector+''‎ را به عنوان ورودی بگیرد و عناصر این ‎''vector''‎ را برعکس ''reverse'')‎) کند (‎‎یعنی اوّلی با آخری تعویض شود، دومی با یکی مانده به آخری و ...). تابع شما نباید خروجی برگرداند بلکه باید عمل خواسته شده را روی همان ‎''vector''‎ ارسالی انجام بدهد. تابع ‎''strlen(char *s)''‎ را شبیه‌سازی کنید. این تابع یه اشاره‌گر به ابتدای یک رشته‌ی کاراکتری می‌گیرد و طول رشته‌ی با شروع از آن اشاره‌گر را بر می‌گرداند. برای هر عدد مثبت، میزان ‎«باینری دوستی‎» یا به‌صورت خلاصه «‎بایدو»ی آن عدد برابر است با توان عدد ‎۲‎، در تجزیه‌ی آن عدد به عوامل اوّل. برای مثال بایدوی عدد ‎۴۰‎ برابر ‎۳‎ است چرا که ‎$40=2^3\times 5$‎ و بایدوی اعداد ‎۱۳‎ و ‎۶۴‎ به‌ترتیب صفر و ‎۶‎ است. یک آرایه‌ی ''‎int bd[128]''‎ سراسری داریم و می‌خواهیم درایه‌ی ‎$0''‎ بر می‌گرداند. به عنوان مثال خروجی فراخوانی ''‎Split("Sib-Moz-Sib-Golabi","-")''‎ یک ''vector''‎ شامل ‎۴‎ رشته‌ی ''‎Sib''‎ و ''‎Moz''‎ و ''‎Sib''‎ و ‎''Golabi''‎ است. و یا ‎''Split("abbccdd"‎, "‎bbc")‎'' یک ''vector''‎ شامل دو رشته‌ی ''‎a''‎ و ''cdd‎'' را بر می‌گرداند. فرض کنید که رشته ورودی در ابتدا و انتهایش مستقیماً جداکننده را در بر نمی‌گیرد. فرض کنید دفعات رخداد جداکننده در ورودی، هم‌پوشانی ندارد (یعنی امکان ندارد که جداکننده ''‎aa''‎ باشد و در ورودی ''‎...aaa...''‎ داشته باشیم‎.(‎ مجدداً یادآوری می‌شود که خروجی تابع شما یک ''‎vector''‎ باید باشد. تابعی بنویسید که یک ''‎vector''‎ به‌طول حداکثر ‎۲۰‎ بگیرد و تمام جایگشت‌های عناصر ''‎vector''‎ را در خروجی چاپ کند. تابع شما باید به صورت بازگشتی باشد. شما مجاز به استفاده از متغیرهای ''‎global'' یا ''static''‎ نیستید. پارامترهای تابع شما باید شامل خود ''‎vector''‎ عناصر به صورت ‎''Const Reference‎'' و حداکثر یک ''‎vector‎'' اضافه و حداکثر یک متغیر ساده‌ی دیگر باشد. الگوریتم این برنامه‌ی شما باید به صورت کارا این عملیات را انجام دهد و از محاسبات اضافه بپرهیزد. الگوریتم شما باید بر مبنای ساخت جایگشت‌ها (با کمک ‎(''for''‎ باشد و نه ''‎swap‎'' کردن عناصر از روی یک جایگشت برای رسیدن به جایگشت بعدی. * [[سوال ۴|سوال قبل]]