الگوریتمستان - برنامهنویسی
نوشتهها با موضوع برنامهنویسی
الگوریتمستان
برچسبها
سیپلاسپلاس
آمادگی مسابقه برنامهنویسی
الگوریتم
برنامهنویسی
مسئله الگوریتمی
ریاضیات
منبع آموزشی
پایتون
یادگیری ماشین
هوش مصنوعی
الگوریتم تقسیم و غلبه
الگوریتم بازگشتی
طراحی الگوریتم
الگوریتم برنامهنویسی پویا
مقاله آموزشی
محاسبات ریاضی
نکته برنامهنویسی
کتاب مسابقات برنامهنویسی
پیمایش گراف
الگوریتم مرتبسازی
ساختمان داده
الگوریتم حریصانه
الگوریتم گراف
کتاب یادگیری ماشین
الگوریتم مسیریابی
ماتریس
ویدئوی آموزشی
جستجوی اول سطح
بازی فکری
الگوریتم کوتاهترین مسیر
درخت دودویی
الگوریتم دایکسترا
امنیت اطلاعات
مسئله کولهپشتی
صف
الگوریتم فلوید-وارشال
جستجوی اول عمق
معرفی وبسایت
الگوریتم عقبگرد
ابزار CodinGame
برنامهنویسی
معرفی وبسایت
وبسایت CodinGame.com یک ابزار آنلاین تمرین برنامهنویسی و حل مسئله بر اساس حل معماهای مختلف برنامهنویسی است. در این وبسایت معماهای مختلف برنامهنویسی در قالب طراحی عامل هوشمند و در سطوح مختلف وجود دارد که به کاربر کمک میکند با شروع از سطوح آسان استفاده از انواع ابزارهای برنامهنویسی برای حل مسئله را تمرین کند ...
نکتهای در مورد کلاسها و مجموعهها در ++C
سیپلاسپلاس
برنامهنویسی
نکته برنامهنویسی
زبان برنامهنویسی ++C دو کلاس set و unordered_set را برای پیادهسازی مفهوم مجموعه (ظرفی با عناصر غیرتکراری) دارد. کلاس set علاوه بر بررسی تکراری نبودن عناصر، آنها را به صورت مرتب ذخیره میکند. پس اگر بخواهیم برای نگه داشتن عناصری از کلاس دلخواه خودمان از set استفاده کنیم، باید حداقل عملگر > را سربارگذاری کرده باشیم تا ظرف set قابلیت تشخیص ترتیب عناصر را داشته باشد ...
راه حل سوالات مسابقه جهانی ACM-ICPC 2016
آمادگی مسابقه برنامهنویسی
مسئله الگوریتمی
برنامهنویسی
ویدئوهای راه حل سوالات مسابقه جهانی ACM-ICPC 2016 را در کانال آپارات الگوریتمستان مشاهده کنید: aparat.com/algorithmha ...
عملگر OFFSET در SQL
برنامهنویسی
زمانی پیش میاد که بخوایم اطلاعات دیتابیس رو به صورت چند بخشی پردازش کنیم؛ مثلا وقتی که نیاز داریم یه لیست رو در چند صفحه نشون بدیم. در این حالت یه راه اولیه اینه که کل اطلاعات رو از دیتابیس بخونیم و بعد متناسب با نیازمون یه بخش از اون رو انتخاب کنیم ...
sync_with_stdio در زبان ++C
سیپلاسپلاس
آمادگی مسابقه برنامهنویسی
برنامهنویسی
زبان برنامهنویسی ++C علاوه بر ابزارهایی مانند cin و cout برای عملیات I/O، توابع scanf و printf را هم برای همین کارها از زبان برنامهنویسی C به ارث برده است. هر کدام از این دو دسته مزایایی دارند که ممکن است بخواهیم از هر دو در برنامهنویسی استفاده کنیم ...
خطای Cannot find -lGL
سیپلاسپلاس
برنامهنویسی
بعد از نصب Qt ممکن است زمان اجرا با خطای Cannot find -lGL برخورد کنید. در این حالت باید نصب بودن کتابخانهی libgl-dev بررسی شود. ...
ابزار Microsoft Solver Foundation
ریاضیات
محاسبات ریاضی
برنامهنویسی
ابزار Microsoft Solver Foundation امکان اجرای شبیهسازیهای ریاضی، مدلسازی و حل مسائل بهینهسازی با استفاده از بستر Net. را فراهم میکند. به عنوان مثال میتوان با این ابزار هر نوع مسالهی بهینهسازی خطی را حل کرد ...
نکتهای در محاسبه زمان اجرای کد
سیپلاسپلاس
برنامهنویسی
نکته برنامهنویسی
برای محاسبه زمان اجرای کد در ++C میتوان از دو تابع clock یا time استفاده کرد. تابع clock، تعداد کلاکهای در اختیار برنامه از CPU تا آن لحظه را برمیگرداند که با تقسیم بر CLOCKS_PER_SEC به ثانیه تبدیل میشود ...
ابزار VJudge
آمادگی مسابقه برنامهنویسی
برنامهنویسی
معرفی وبسایت
وبسایت Virtual Judge این امکان را فراهم میکند که با ترکیب دلخواهی از سوالات وبسایتهای مخزن سوالات برنامهنویسی همچون UVA ، Codeforces و خود سوالات ACM-ICPC ، مسابقه مجازی برگزار کرد. از این حیث برای تمرین تیمهای مسابقات ACM-ICPC بسیار مناسب و کارا است ...
هدر فایل bits/stdc++.h
سیپلاسپلاس
برنامهنویسی
نکته برنامهنویسی
هنگام شرکت در مسابقات برنامهنویسی تایپ اسم تک تک هدرفایلهای مورد نیاز برای اجرای برنامه به زبان ++C زمان نیاز دارد. هدر فایل bits/stdc++.h این زحمت را کم میکند. زمانی که این هدر را include میکنیم، تمام فایلهای سرآیند استاندارد به برنامه اضافه میشوند و اصولا نیاز به اضافه کردن هدرفایل جدیدی نیست ...
نکتهای از مسأله Graphical Editor
سیپلاسپلاس
آمادگی مسابقه برنامهنویسی
برنامهنویسی
برای حل سوال Graphical Editor باید هر خط از ورودی بررسی و اگه دستور معتبر بود اجرا شود. اما اگر دستور نامعتبر بود، باید کل خط نادیده گرفته شود. مشکل اینجاست که مشخص نیست چه دادههایی و به چه تعداد در اون خط وجود دارند ...
تابع popen در زبان ++C
سیپلاسپلاس
برنامهنویسی
نکته برنامهنویسی
گاهی لازم است یک برنامه خارجی را از برنامه خودمان اجرا و خروجی آن را استفاده کنیم. این برنامه میتواند یک برنامه اجرایی دیگر یا یکی از ابزارهای سیستم عامل مانند ping یا حتی اجرای یک برنامه java باشد. آنچه که مهم است اجرا شدن از خط فرمان و تولید خروجی متنی است ...
ظرفها در ++C
سیپلاسپلاس
برنامهنویسی
منظور از ظرف یا نگهدارنده (Container) ساختمان دادهایست که دستهای از اطلاعات را در خود نگه میدارد. آنچه که این ساختمانها را از هم متمایز میکند، نوع تخصیص حافظه، نوع دسترسی و کارایی درج و حذف عنصر در آنها است که به برخی از آنها کاربریهای ویژه میدهد ...
نکتهای در استفاده از map
سیپلاسپلاس
برنامهنویسی
نکته برنامهنویسی
ساختمان داده map (یا dictionary) از ابزارهای مهم و کاربردی هر زبان برنامهنویسی است که برای برقراری نگاشت بین هر نوع کلید و مقدار متناظر استفاده میشود. آرایههای معمولی یک عدد صحیح را به عنوان کلید به یک مقدار از هر نوع کلاس یا نوع داده نگاشت میکنند ...
فایل سرآیند algorithm
سیپلاسپلاس
برنامهنویسی
فایل سرآیند (هدر فایل) algorithm از جمله فایلهای سرآیند تعاریف کتابخانه قالب استاندارد (STL) زبان برنامهنویسی ++C است که به طور عمده شامل توابعی برای کار با مجموعهای از دادهها (آرایهها و لیستها) است ...
نکات مهم در برنامهنویسی به زبان ++C
سیپلاسپلاس
آمادگی مسابقه برنامهنویسی
برنامهنویسی
اجتناب از بررسی تساوی در اعداد اعشاری اعداد اعشاری در محاسبات ریاضی - مانند عمل تقسیم یا محاسبه توابع مثلثاتی و غیره - ممکن است حاوی مقدار بسیار ناچیزی خطا باشند که عموما ناشی از عملیات گرد کردن و قطع کردن نتایج مراحل میانی محاسبات هستند ...
بازی مینروب
برنامهنویسی
بازی فکری
تعطیلات عید به این فکر افتادم که اگر حس درس و کار نداشتم، اوقات بیکاری را با کدنویسی متفرقه بگذرانم تا هم وقتم تلف نشود و هم چیزهای جدید یاد بگیرم. اولین ایده هم نوشتن بازیهای فکری بود. چند بازی فکری مشهور و غیرمشهور را لیست کردم و بالاخره برای گام اول مینروب (Minesweeper) را انتخاب کردم ...
حلقههای تکرار در ++C
سیپلاسپلاس
برنامهنویسی
یکی از ابزارهای پر استفاده و مهم هر زبان برنامهنویسی حلقههای تکرار هستند. وجود چنین ابزاری به برنامهنویس این امکان را میدهد که ساختارهای نیازمند به تکرار مجموعه دستورات (مانند جستجو، گزارشگیری، محاسبات، دریافت اطلاعات از کاربر یا فایل) را پیادهسازی کند ...
کلاس اعداد بزرگ در ++C
سیپلاسپلاس
برنامهنویسی
یکی از دغدعههای مهم برخی از افرادی که در حوزههایی مانند رمزنگاری برنامهنویسی میکنند کار با اعداد بسیار بزرگ صحیح است. در چنین حوزههایی نیاز زیادی به عملیات ریاضی روی اعداد بزرگ وجود دارد. تا کنون کلاسها و توابع زیادی روی اینترنت برای حل این مشکل از طرف برنامهنویسان معرفی شده است ...
توابع دوست کلاس در ++C
سیپلاسپلاس
برنامهنویسی
توابع دوست کلاسها از جمله موارد بحث برانگیز برنامهنویسی شیءگرا به زبان ++C هستند. چرا که یکی از اصول اساسی شیءگرایی، یعنی پنهانسازی اطلاعات، را نقض میکنند. با این وجود به خاطر کاربردهای متعددی که دارند از حضورشان نمیتوان چشمپوشی کرد ...
سربارگذاری عملگرها در ++C
سیپلاسپلاس
برنامهنویسی
همانطور که میدانید، شیوه معرفی اشیاء کلاسهای تعریف شده در ++C همانند متغیرهای عادی هستند. به عنوان مثال اگر کلاسی به نام myclass تعریف کرده باشیم، عبارت زیر یک شیء از این کلاس به نام a تعریف میکند: myclass a; اما اشیاء کلاس یک تفاوت اساسی با متغیرهای معمولی (مانند int ،float ،char و ...
اشارهگرها در زبان ++C
سیپلاسپلاس
برنامهنویسی
یکی از مهمترین مباحث کاربردی هر زبان برنامهنویسی، اشارهگر و مفهوم آن است که کاربرد گستردهای در شاخه ساختمان دادهها نیز دارد. در این فرصت با مفهوم اشارهگر و همینطور روش تعریف آن در زبان ++C آشنا میشوید ...
متغیرهای مرجع در ++C
سیپلاسپلاس
برنامهنویسی
زبان برنامهنویسی C از دو نوع متغیر پشتیبانی میکند: متغیرهای معمولی و اشارهگرها (متغیرهای حاوی آدرس حافظه). زبان ++C نوع سومی را به این مجموعه اضافه کرده است: متغیرهای مرجع (Reference). متغیرهای مرجع از روی دو نوع دیگر ساخته میشود و به نوعی میتوان گفت نام مستعار برای متغیر اصلی به حساب میآید ...
کلاسهای حافظه در ++C
سیپلاسپلاس
برنامهنویسی
زبان برنامهنویسی ++C از کلاسهای حافظه (Storage Classes) مختلفی برای تعریف متغیرها پشتیبانی میکند. کلاس حافظه اتوماتیک (auto) این کلاس اصلیترین کلاس حافظه زبان ++C محسوب میشود. متغیرهایی که توسط این کلاس تعریف میشوند، با خروج از محدوده تعریف به طور خودکار از بین میروند ...
آرایه پویای دو بعدی در ++C
سیپلاسپلاس
برنامهنویسی
آرایههای دو بعدی کاربردهای بسیاری از جمله جداول و ماتریسها دارند. اهمیت تعریف آرایههای پویای دو بعدی کمتر از آرایههای یک بعدی نیست. آرایههای پویای دو بعدی یک ویژگی جالب در مقایسه با آرایه ایستا دارند ...
قالبها در ++C
سیپلاسپلاس
برنامهنویسی
یکی از امکانات جالب و مفید زبان ++C قالبها (Templates) هستند که انعطاف زیادی به کدنویسی میدهند. فرض کنید در یک برنامه نیاز به تعویض مقادیر دو متغیر هست. یعنی مثلا میخواهیم مقادیر a و b را با هم عوض کنیم ...
آرایه ایستا و پویا در ++C
سیپلاسپلاس
برنامهنویسی
زبان ++C همانند اکثر زبانهای برنامهنویسی دیگر، ساختاری به نام آرایه دارد که امکان تعریف مجموعهای از متغیرهای همنوع (اصطلاحا مجموعه عناصر همگن) را فراهم میکند. چنین ساختاری به صورت زیر تعریف میشود: type name[number of elements]; که در آن type یکی از انواع دادههای استاندارد ++C، ساختمان و یا کلاس است ...