====== سوال ۲ ====== در برنامه‌های زیر شما باید کد بنویسید یا تحلیل کنید. کدی که می‌نویسید باید خلاصه و مختصر مفید باشد. اگر ''include''ها بدیهی و مرسوم هستند، نیازی به نوشتن آن‌ها نیست و فقط بخش‌های لازم را بنویسید. اگر قرارست تحلیل کنید هم در حد یک پارگراف توضیح دهید. در هیچ برنامه‌ای مجاز به استفاده از امکاناتی که در کلاس تدریس نشده، نیستید. - تابعی بنویسید که یک عدد ''int'' را بگیرد و جای مقدارهای بایت‌های دوم و سوم (دو بایت وسط) آن را با هم عوض کند. در این تابع شما مجاز به استفاده از عملگرهای تقسیم یا باقی‌مانده یا ضرب یا شیفت بیتی نیستید. تابع شما چیزی بر نمی‌گرداند بلکه خود عدد را عوض می‌کند. حداکثر هم سه متغیر جدید می‌توانید تعریف کنید. - برنامه‌ای بنویسید که یک عدد ''int x'' بخواند و تعداد اعداد کوچکتر از $۲۳۰$ای مثل ''z'' که در آن ''z == (z&x)'' هستند را چاپ کند. برنامه شما نباید از $(۲۳۰)O$ باشد. - حروف A و E و I و O و U حروف صدادار زبان انگلیسی هستند و ۲۱ حرف دیگر بی‌صدا هستند. یک خط دستور بنویسید که برای حرف بی‌صدای ''char x'' در متغیر ''int k'' ذخیره کند که ''x'' چندمین حرف بی‌صدا است؟ برای مثال B اولین کاراکتر بی‌صدا و Y بیستمین حرف بی‌صدا است. دستور شما نباید سمی‌کالن یا کامای اضافه داشته باشد و طول آن هم نباید خیلی (در حد دونه دونه شماردن! یا کپی پیست کردن یک تکه به ازای هر کدام از حرف‌های صدادار) طولانی باشد. - مقدار ''long long m = 1LL<<32'' چیست؟ اگر ''LL'' را ننویسیم این مقدار چند می‌شود؟ فرض کنید بعد از این خط ما (در حالت با ''LL'') دستور ''long long z = x & (m-(x+1));'' را نوشته‌ایم که در آن ''x'' یک متغیر ''long long'' کوچکتر از $230$ است. در این‌صورت مقدار ''z'' چه‌چیزی را در خود دارد؟ - برنامه‌ای بنویسید که یک عدد $n$ و سپس $n$ سه تایی مختصه (صحیح) بگیرد. این $n$ نقطه در فضای سه بعدی تعریف شده و می خواهیم‌ خود نقاط را بر حسب فاصله از مبدأ مختصات به‌صورت نزولی مرتب کرده و چاپ کنیم. شما حداکثر یک آرایه می‌توانید بگیرید و مجاز به تعریف ''struct'' نیستید. برای مرتب‌سازی حتماً باید از تابع ''sort'' خود زبان استفاده کنید. - می‌گوییم کلمه‌ی الف از کلمه‌ی ب خوشگل‌تر است اگر تعداد ''A''های رشته الف بیشتر از رشته ب باشد. در صورت تساوی مقایسه بر روی تعداد ''B''ها انجام می‌شود و ... الی روی ''Z''ها. برای مثال ''PAA'' از ''DAST'' خوشگل‌تر است و ''AFTAB'' از ''MAHTAB'' خوشگل‌تر است. برنامه‌ای بنویسید که یک $n$ و سپس $n$ تا کلمه با حروف بزرگ بخواند و آن ها را به ترتیب خوشگلی مرتب‌کرده و سپس چاپ کند. شما مجاز به تعریف تابع یا آرایه یا بیش‌از یک بار استفاده از ''sort'' یا انجام ''sort'' به‌صورت دستی (غیر از ''sort'' خود C++) نیستید. - برنامه‌ی کاملی بنویسید که دو عدد حداکثر ۱۰۰۰ رقمی را از ورودی بخواند و باقی‌مانده‌ی تقسیم عدد اول بر عدد دوم را در خروجی چاپ کند. برای این‌کار شما تنها مجاز به انجام عمل ضرب و روش باینری‌سرچ هستید. * [[سوال ۱|سوال قبل]]