برنامه های طراحی الگوریتم من { شماره ۱}
طراحی الگوریتم چهارشنبه ۶ آذر ۱۳۸۷از اونجایی که درس طراحی الگوریتم برای من داره یواش یواش معضل های بزرگی ایجاد می کنه، تصمیم گرفتم که هرچیزی که از درس طراحی الگوریتم یاد می گیرم را در حد توان و وقتی که دارم اینجا بزارم. درس طراحی الگوریتم درس بسیار شیرینی هستش ولی اگر استادت استاد ما نباشه ( خداییش خوب درس میده ولی سخت گیره. بنده خدا فارغ التحصیل شریف ه . چاره ی دیگه ای نداره )
در این سری از پست ها قصد اصلی من اینه که برنامه هایی که در درس طراحی الگوریتم زیاد کاربرد دارن را پیاده سازی کنم. این جوری هم خودم چیز یاد می گیرم و هم سعی کردم چیزی را یاد بقیه بدم.
برنامه ها در محیط Visual Studio 2008 پیاده سازی میشن ولی در هر محیط دیگه ای که بشه ++C نوشت قابل پیاده سازی هستن.
برنامه شماره ۱
پیدا کردن بزرگترین مقسوم علیه مشبرک بین دو عدد
در این برنامه هدف این است که با دریافت دو عدد، بزرگترین مقسوم علیه بین آنها را به دست آوریم. برنامه از یک تابع برای این کار استفاده می کند و در قسمت main برنامه با پارامترهای ما صدا زده می شود. ایده اصلی در طراحی تابع این برنامه آن است که بزرگترین مقسوم علیه مشترک بین u و v بزرگترین مقسوم علیه مشترک بین v و u-v نیز هست. در واقع به جای استفاده از روش تقسیم از ایده تفریق استفاده شده است. البته می دانیم که در کامپیوتر عمل تقسیم به وسیله عمل تفریق انجام می شود و پیزی به عنوان واحد تقسیم کننده که به صورت مجزا مانند واحد جمع عمل کند نداریم.
پی نوشت : به دنبال پلاگینی هستم که کدها را به صورت رنگی نشان دهد. شما چیزی سراغ ندارین ؟
یک افزونه برای مشخص کردن کد ها پیدا کردم.CodeHighlighter .
شما هم اگر که از کار این افزونه راضی بودین در قسمت نظر خواهی اعلام کنید تا سورس آن را در اینجا قرار دهم.
در قسمت بعدی در مورد برنامه های بازگشتی صحبت خواهیم کرد.
#include "stdafx.h"
#include <iostream>
using namespace std;
int my_counter;
int gcd(long int u, long int v)
{
long int t;
int i=0;
my_counter=0;
while(u>0)
{
if (u<v)
{
t=u;
u=v;
v=t;
}
u=u-v;
i++;
my_counter++;
}
return v;
}
int _tmain(int argc, _TCHAR* argv[])
{
long int x,y,o;
cout<<"Enter x :\n"<<endl;
cin>>x;
cout<<"Enter y :\n"<<endl;
cin>>y;
if (x>0 && y> 0)
{
o=gcd(x,y);
cout<<"Greatest Common Divisor of x and y is : "<<o<<endl;
cout<<"Times to do this is : "<<my_counter<<endl;
}
else
{
cout<<"x and y and z must be greater than 0"<<endl;
return 0;
}
return 0;
}

خروجی مطالب
چهارشنبه ۶ آذر ۱۳۸۷ در ۱۲:۲۶ ب.ظ
یکی از مزخرف ترین درسهایی که ترم پیش با ۱۱ پاس شدم