عضو شوید


نام کاربری
رمز عبور

:: فراموشی رمز عبور؟

عضویت سریع

نام کاربری
رمز عبور
تکرار رمز
ایمیل
کد تصویری
براي اطلاع از آپيدت شدن وبلاگ در خبرنامه وبلاگ عضو شويد تا جديدترين مطالب به ايميل شما ارسال شود



تاریخ : دو شنبه 19 خرداد 1393
بازدید : 1074
نویسنده : هادی مومنی
موضوع: تحقیق

 

 

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

برای تهیه این اسلاید کلی وقت صرف کرده ام لطفا با نظرات خود من را یاری کنید.

 

 

«« تحقیق درس هوش مصنوعی  »»



:: موضوعات مرتبط: پروژه هوش مصنوعی , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 1106
نویسنده : هادی مومنی

مساله هشت وزیر از جمله مسائل پرمخاطب مباحث طراحی الگوریتم است. ۸ مهره وزیر رو روی صفحه شطرنج چنان بچینید که نتوانند همدیگه رو تهدید کنند.


برای افرادی که با بازی شطرنج آشنایی ندارند:
وزیر مهره ای از مهره های بازی شطرنجه که می تونه در تمامی ۸ جهت هر تعداد خانه – تا زمانی که مهره ای مانع نباشه – حرکت کنه و اگه در یکی از این خانه ها مهره حریف قرار داشته باشه تهدیدش کنه.
مساله هشت وزیر : ما مساله رو در حالت کلی در نظر می گیریم. یعنی زمانی که ابعاد صفحه شطرنج n در n و تعداد مهره ها n هستش. ( n > 3 ) روشهای مختلفی برای پیدا کردن جواب وجود داره. یکی از این روشها چیدن تصادفی مهره ها روی صفحه شطرنجه! به عبارت دیگه n مهره رو به صورت تصادفی در خانه های مختلف صفحه قرار می دیم و بررسی می کنیم که آیا شرط مساله رو برآورده می کنن یا نه؟ این روش بسیار سریع ما رو به جواب می رسونه. اما ایرادی که داره نمی شه مطمئن بود بشه به همه حالتهای چینش دست پیدا کرد. در صفحه ۸ در ۸ شطرنج این مساله ۹۲ جواب مختلف داره. شما ممکنه روش تصادفی رو هزار بار به کار ببرید، اما نتونید همه ۹۲ حالت ممکنه رو به دست بیارید. این روش زمانی مفیده که پیدا کردن یه جواب برای ما کافی باشه.
در این دسته روشها مهره ها رو یکی یکی و به صورت بازگشتی روی صفحه طوری می چینیم که مطمئن باشیم با مهره های قبلی تداخل نداره و شرط مساله برآورده می شه. معمولا از سطر اول صفحه شروع می کنیم به قرار دادن مهره ها. پر واضحه که هر سطر فقط می تونه یه مهره رو تو خودش جا بده. مهره سطر دوم رو طوری قرار می دیم که توسط مهره سطر اول تهدید نشه. برای این کار خانه های مختلفی از سطر رو می شه انتخاب کرد. برای نظم داشتن کارهامون فرض می کنیم همیشه انتخاب خانه ها از سمت چپ سطر شروع می شه. به عبارت دیگه با شروع از سمت چپ سطر اولین خانه ای که شرط رو برآورده کنه انتخاب می کنیم. به همین ترتیب سطرهای بعدی رو هم می چینیم. اگر به سطری رسیدیم که بر اساس چیدمان سطرهای قبلی هیچ خانه امنی برای مهره وجود نداشت ( یعنی همه خانه ها توسط مهره های قبلی تهدید می شدن ) یه مرحله به عقب بر می گردیم و مهره سطر قبل رو جابجا می کنیم. این کار هم با حرکت مهره به اولین خانه سمت چپ موقعیت فعلی که شرط رو برآورده کنه، انجام می شه. با ادامه دادن این روال و با جابجا کردن مهره ها به صورت منظم و بازگشتی تمامی حالتهای ممکنه به دست می یان.
برای پیاده سازی چنین الگوریتمی و تشخیص اینکه چه خانه هایی از سطر امن هستن روشهای مختلفی وجود داره. ساده ترینشون اینه که هر بار تمامی خانه هایی رو که امکان تهدید شدن از اونها وجود داره بررسی کنیم تا از قرار نداشتن مهره وزیر در اونها مطمئن باشیم. اما این روش اصلا کارا و بهینه نیست.
روش دیگه تعریف کردن صفحه شطرنج به صورت یه آرایه n در n هستش که خونه های امن و غیر امن با علامتگذاری مشخص می شن. هر بار که مهره ای رو صفحه قرار می گیره تمام خونه هایی که توسط این مهره تهدید می شن به صورت غیر امن علامتگذاری می شن. به این ترتیب می شه فهمید که هر خونه با توجه به چینش مهره های قبلی امن هست یا نه؟ اما این روش هم معایبی داره که باعث می شه به روش سوم رجوع کنیم. برای آشنایی با این معایب کافیه سعی کنید کد برنامه رو بنویسید!
در روش سوم که من ازش استفاده کردم، برای علامتگذاری خانه های امن و غیر امن از شیوه دیگه ای بهره می بریم. به این ترتیب که اقطار راست به چپ، چپ به راست و ستونها با شماره هایی مشخص می شن که کار علامتگذاری رو بسیار ساده می کنن. این روش بدون شک از کاراترین روشهای رسیدن به جواب مساله ماست. هم سرعت اجرای بالایی داره و هم حافظه مصرفی بسیار کم!
کدی که به زبان ++C درباره این مساله نوشته شده با استفاده از روش سوم تعداد جوابهای ممکن – و نه خود جوابها – برای مقادیر مختلف n رو مشخص می کنه. به عنوان مثال اگر n رو ۸ وارد کنید خروجی برنامه ۹۲ خواهد بود. توصیه می کنم برای nهای بزرگ برنامه رو امتحان نکنید! اگر n رو ۱۶ وارد کنید بعد از گذشتن زمان زیادی عدد ۱۴۷۷۲۵۱۲ روی صفحه نمایش چاپ می شه. یعنی در صفحه شطرنج ۱۶ در ۱۶ حدود ۱۵ میلیون حالت مختلف برای چیدمان صحیح وجود داره!!



در زیر نیز برای شما عزیزان لینک دانلود سورس کد این مسئله به زبان های گوناگون گذاشته شده است


در لينک زير حل مسئله 8 وزیر با زبان C قرار دارد:

لینک دانلود :


در لينک زير حل مسئله 8 وزیر با زبان ++C قرار دارد:

لینک دانلود :

 

در لينک زير حل مسئله 8 وزیر با زبان #C قرار دارد:

 

لینک دانلود :

 

در لينک زير حل مسئله 8 وزیر توسط الگوريتم ژنتيک با زبان VB.Net قرار دارد:

 

لینک دانلود :

 



:: موضوعات مرتبط: پروژه #c , پروژه هوش مصنوعی , پروژه ++c , پزوژه visual basic , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 1271
نویسنده : هادی مومنی
موضوع: تحقیق

 

امروز برای شما دانشجویان مهندسی نرم افزار و بازدید کننده گان عزیز یک اسلاید در مورد مسئله معمای 8 که مرتبط با درس هوش مصنوعی می باشد آپلود کردم . امیدوارم استفاده کافی را از این مطلب داشته باشید. 

برای تهیه این اسلاید کلی وقت صرف کرده ام لطفا با نظرات خود من را یاری کنید.

 

 

«« تحقیق درس هوش مصنوعی »»

 


:: موضوعات مرتبط: پروژه هوش مصنوعی , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 954
نویسنده : هادی مومنی

      برنامه ی ساده ی بعدی :   پیدا کردن بزرگترین عدد

الگوریتم: 

ابتدا برای نگه داری اعداد جهت مقایسه ،متغیر تعریف می کنیم، سپس اعداد  یکی یکی  با متغیر max 

مقایسه می شوند و عدد بزرگتر در max  قرار داده می شود

 

 ++c

  #c  
 #include
#include

int main()
{
int max = 0, i=0;
int num;
cout<<"\npress {a...Z} TO 'FINISH'.";
cout<<"\n enter your number :";
while( cin>>num )
{
max = (max < num)?num:max;
}
cout<<"the maximum number is : "<<max;

getch();
return 0;
}

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

int max=0;
private void button1_Click_1(object sender, EventArgs e)
{
max = (max < Int32.Parse(txt1.Text)) ? Int32.Parse(txt1.Text) : max;
lbl2.Text = (lbl2.Text + txt1.Text + ",");
lbl3.Text = ("maximum is : " + max);
txt1.Clear();

}

}
}
 
 






:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 796
نویسنده : هادی مومنی

برنامه: محاسبه ی فاکتوریل اعداد

 ++C

 

 

 

 #C

 

 #include
#include

main()
{
int num,fact=1;

cout<<"Enter number :";
cin>>num;

for(int i=2; i<=num ; i++)
fact = fact * i;

cout<<"Factorial of "<<num<<" is : "<<fact;

getch();
return 0;
}
   using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

int num,fact=1;

num=Int32.Parse( textBox1.Text) ;

for(int i=2; i<=num ; i++)
fact = fact * i;

lbl1.Text = Convert.ToString(fact) ;




}
}
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 668
نویسنده : هادی مومنی

برنامه : محاسبه جملات سری فیبوناچی و مجموع آنها

 

 

 

 

 ++C

 

 

#C

 

 #include
#include


main()
{
int x1=1,x2=1,x3,n,sum=0;
cout<<"how much object of Fibonacci series want to find?\nenter here : ";
cin>>n;
cout<<","<<x1<<","<<x2;
for(int i=3; i<=n;i++)
{

x3=x2+x1;
x1=x2;
x2=x3;
sum = sum + x3;
cout<<","<<x3;
}
cout<<"\n Result = "<<sum;

getch();
return 0;
}

 

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int x1 = 1, x2 = 1, x3, n, sum = 0;
n = Int32.Parse(textBox1.Text);
lbl1.Text=lbl1.Text+x1+","+x2;
for (int i = 3; i <= n; i++)
{

x3 = x2 + x1;
x1 = x2;
x2 = x3;
sum = sum + x3;
lbl1.Text=lbl1.Text+","+x3;
}
lbl2.Text= lbl2.Text+sum;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
lbl1.Text = "Result :";
lbl2.Text = "sum :";
}

}
}





نوع



:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 723
نویسنده : هادی مومنی

برنامه: مرتب سازی حبابی یک آرایه از اعداد.

تعریف مرتب سازی حبابی:

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

فرض کنید می‌خواهیم n داده به صورت صعودی مرتب شوند. عنصر اول را با با عنصر دوم مقایسه کرده، و در صورتی که عنصر اول بزرگتر باشد باشد جای عنصر اول و دوم را عوض می‌کنیم. همین کار را با عناصر دوم و سوم انجام می‌دهیم و همینطور عناصر سوم و چهارم ، الی آخر. وقتی این کار تمام شد بزرگ‌ترین عنصر بین داده‌ها به آخر لیست می‌رسد . حالا یک بار دیگر از اول این کار را انجام می‌دهیم اما این بار تا عنصر (n -۱)ام ادامه می‌دهیم (عنصر nام در مرحله اول در جای خودش قرار گرفته). باز هم این کار را تا عنصر (n - ۲)ام تکرار می‌کنیم ، و بازهم .... تا اینکه بالاخره داده‌ها مرتب می‌شوند.

ادامه ی تعریف درسایت منبع 

 

         

الگوریتم:

پس از خواندن اداد از ورودی که

در سی++

توسط  آرایه و دستورات cin و ...

for(int i =0;i < arraySize;i++)

{

cin>>array[ i];

}

که یک آرایه با نام array و اندازه ی arraySize را از ورودی می خواند که بین هر عد یک فضای خالی باید باشد یا بعد هر عدد یک enter زده شود

و در سی شارپ و جاوااسکریپت

از طریق تکست باکس ها که طبق قرارداد ما ن بعد هر عدد یک کاما باید وارد شود

مثال:

برای ورود اعداد 5و3و0و1و4و2 داریم:

5,3,0,1,4,2,

که پس از ارسال تکست باکس به تابع مقدار زیر قابل مشاهده هست

0,1,2,3,4,5

 

 مرتب سازی حبابی ++C
 #include
#include
void bubleSort(int num[],int numSize)
{

   int temp=0;
   for(int i=numSize;i>0;i--)
   {
      for(int j=0;j<i;j++)
      if(num[j] > num[j+1])
      {
         temp = num[j];
         num[j] = num[j+1];
          num[j+1] = temp;
      }
   }

}
main()
{
int test[10]={5,9,0,8,1,7,2,6,3,4};
int size=10;

bubleSort(test,size-1);

 

for(int i=0;i<size;i++)
cout<<"\ntest["<<i<<"] = "<<test[i];


getch();
return 0;

}

 

 

 

 مرتب سازی حبابی #C
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//...................................................................................
int[] bubleSort(string test)
{

   int i = 0;

   int test2size = 0;

 

  //count number's that entered in textbox by counting ','
   for (i = 0; i < txt1.TextLength; i++)
      if (test[i] == ',')
         test2size++;

   int[] test2 = new int[test2size];
   test2size = 0;

   for (i = 0; i < txt1.TextLength; i++)
   {

      if (test[i] != ',')
         test2[test2size] = test2[test2size] * 10 + Int32.Parse(test[i].ToString());
      else test2size++;

   }

   int temp = 0;
   for (i = test2size - 1; i > 0; i--)
   {
      for (int j = 0; j < i; j++)
         if (test2[j] > test2[j + 1])
        {
             temp = test2[j];
             test2[j] = test2[j + 1];
             test2[j + 1] = temp;
        }
   }

return test2;
}
//..............................................................
public void button1_Click(object sender, EventArgs e)
{

lstb1.Items.Clear();

 

int[] test=bubleSort(txt1.Text);

 

for (int i = 0; i < test.Length; i++)
{
lstb1.Items.Add(test[i]);
}

}
}
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 843
نویسنده : هادی مومنی

برنامه: مرتب سازی یک آرایه با الگوریتم quick Sort 

الگوریتم:

برای این کار از دو تابع استفاده می کنیم

1 - تابع پارتیشن

int Partition(int arr[],int Lobj,int Robj)

* که یک آرایه ( arr[] ) و سمت چپ ترین اندیس آرایه ( Lobj ) و سمت راست ترین اندیس آرایه ( Robj ).

تابع پارتیشن در هر مرحله اجرا ،سمت چپ ترین عنصر را(Lobj) به عنوان عنصر محوری (Pivot)انتخاب می کند و  تمام عناصر بزرگتر از آن را با عناصر کوچکتر از آن تعویض می کند. آرایه ورودی پس از پایان این تابع به گونه ایست که در هر مرحله عنصر محور را در مکان اصلی اش قرار می دهد.

.......................................................//

2- تابع کویک سورت

void quicksort(int arr[],int Lobj,int Robj)

 

تابع کویک سورت هر بار آرایه را به دو قسمت تقسیم می کند

قسمت اول شامل خانه های سمت چپ ترین خانه (Lobj) تا عنصر محوری  (Pivot)

قسمت دوم شامل خانه های عنصر محوری  (Pivot)  تا سمت راست ترین خانه  (Robj)


 

 برنامه مرتب سازی سریع به زبان++C
  #include
#include

#define size 21
//.................................................................
int Partition(int arr[],int Lobj,int Robj)
{

    int pivot = Lobj;
    int temp;
    while(Lobj < Robj)
    {
        while(arr[Lobj] <= arr[pivot])
        Lobj++;  

        while(arr[Robj] > arr[pivot])
        Robj--;

        if(Lobj < Robj)
       {
           temp = arr[Lobj];
           arr[Lobj] = arr[Robj];
           arr[Robj] = temp;
        }
     }
if( arr[Robj] < arr[pivot])
{
    temp = arr[pivot];
    arr[pivot] = arr[Robj];
    arr[Robj] = temp;
}
    return Robj;
}
//.................................................................
void quicksort(int arr[],int Lobj,int Robj)
{

    if(Lobj < Robj)
    {  
       int pivot = Partition(arr,Lobj,Robj);
       quicksort(arr,Lobj,pivot-1);
       quicksort(arr,pivot+1,Robj);
    }
}
//.................................................................

main()
{

    int test[size]={15,20,10,19,11,18,12,17,13,16,14,5,9,0,8,1,7,2,6,3,4};

    quicksort(test,0,size-1);

    for(int i=0;i<size;i++)
    cout<<" test["<<i<<"] = "<<test[i];

    getch();
return 0;
}

 

   برنامه مرتب سازی سریع به زبان #C 
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int Partition(int[] arr, int Lobj, int Robj)
{

    int pivot = Lobj;
    int temp;
    while(Lobj < Robj)
    { 
       while(arr[Lobj] <= arr[pivot])
            Lobj++;

       while(arr[Robj] > arr[pivot])
           Robj--;

       if(Lobj < Robj)
       {
           temp = arr[Lobj];
           arr[Lobj] = arr[Robj];
           arr[Robj] = temp;
       }
    }
if( arr[Robj] < arr[pivot])
{
    temp = arr[pivot];
    arr[pivot] = arr[Robj];
    arr[Robj] = temp;
} return Robj;
}
//.................................................................
void quicksort(int[] arr,int Lobj,int Robj)
{

    if(Lobj < Robj)
    {  
        int pivot = Partition(arr,Lobj,Robj);
        quicksort(arr,Lobj,pivot-1);
        quicksort(arr,pivot+1,Robj);
    }

}

//.......................................................................

private void button1_Click(object sender, EventArgs e)
{
lbl1.Text = "Sorting ...";
int[] test = { 15, 20, 10, 19, 11, 18, 12, 17, 13, 16, 14, 5, 9, 0, 8, 1, 7, 2, 6, 3, 4 };
quicksort(test, 0, test.Length - 1);
lbl1.Text = "";
for (int i = 0; i < test.Length; i++)
lbl1.Text = lbl1.Text + test[i]+",";
}
}
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 1038
نویسنده : هادی مومنی

برنامه: آرایه ای از اعداد را به روش ادغام، یا همان  marge sort مرتب می کند

الگوریتم : 

از دو تابع استفاده می کنیم

1 - تابع  Marge Sort یا  MS().

void ms(int arr[],int lx,int rx)

این تابع از عنصر lx تا عنصر rx آرایه ی arr[] را پردازش می کند.

 

2 - تابع sort یا sortm

void sort(int arr[],int lx,int mid1,int mid2 , int rx)

این تابع  قسمت اول آرایه ی arr یعنی lx تا mid1  و قسمت دوم یعنی mid2 تا rx  را مرتب کرده  و در آرایه  temp نتیجه را که مرتب شده ی دو قسمت فوق می باشد را ذخیره ، سپس توسط دستور زیر ، عناصر مرتب شده را در آرایه ی اصلی کپی می کند.(که mid2=mid1+1)

for(int i=0,k=lobj;i <j;i++,k++) arr[k]=temp[i];

که lobj همان lx و robj همان rx می باشد.

 

* تابع  run در کد جاوااسکریپت ،رشته ی ورودی را به یک آرایه از اعداد تبدیل می کند.

فرمت ورودی اعدا باید به صورت زیر باشد.

example : 5,2,6,4,2,3,9,8,5,

که پس از هر عددی یک "," باید وارد شود و بدون هیچ گونه فاصله ای.

 برنامه مرتب سازی ادغامی با زبان ++C
#include
#include


#define size 10

void sort(int arr[],int lx,int mid1,int mid2 , int rx)
{

   int j=0; 
   int temp[size];
   int lobj=lx,robj=rx;

   //sorting arr[lx]..arr[mid] with arr[mid2]...arr[rx] and save it in temp[]
   while( (lx <= mid1) && (mid2 <= rx) )
   {
         if (arr[lx] < arr[mid2])
        {
                temp[j++]=arr[lx++];
        }
        else{
              temp[j++]=arr[mid2++];
              }
    }
   while( mid2 <= rx)
   {
          temp[j++]=arr[mid2++];
   }
   while( lx <= mid1)
   {
            temp[j++]=arr[lx++];
   }
   //copy temp[] into the original array ( arr[] )
   for(int i=0,k=lobj;i <j;i++,k++)       arr[k]=temp[i];
  }

void ms(int arr[],int lx,int rx)
{


   if(rx > lx)
   {

          int mid1 = (lx + rx)/2;
           int mid2 = mid1+1;

          ms(arr,lx,mid1);
         ms(arr,mid2,rx);
         sort(arr,lx,mid1,mid2,rx);
   }

}

int main()
{

   int test[size] = {5,9,1,8,2,7,3,6,4,0};

   cout<<" Array is ";
   for(int i=0; i          cout<<" "<<test[i];

   ms(test,0,size-1);

    cout<<" sorted array is : ";
   for(int i=0; i          cout<<" "<<test[i];
getch();
return 0;
}

 

  برنامه مرتب سازی ادغامی با زبان #C 
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


void sort(int[] arr,int lx,int mid1,int mid2 , int rx)
{

   int j=0; 
   int[] temp = new int[arr.Length];
   int lobj=lx,robj=rx;

   //sorting arr[lx]..arr[mid] with arr[mid2]...arr[rx] and save it in temp[]
   while( (lx <= mid1) && (mid2 <= rx) )
   {
          if (arr[lx] < arr[mid2])
         {
               temp[j]=arr[lx];
                j = j + 1;
                lx = lx + 1;
         }
         else{
                temp[j]=arr[mid2];
                j = j + 1;
                 mid2 = mid2 + 1;
          }
   }
   while( mid2 <= rx)
   {
          temp[j]=arr[mid2];
           j = j + 1;
           mid2 = mid2 + 1;
   }
   while( lx <= mid1)
   {
           temp[j]=arr[lx];
           j = j + 1;
           lx = lx + 1;
   }
   //copy temp[] into the original array ( arr[] )
   for(int i=0,k=lobj;i <j;i++,k++)           arr[k]=temp[i];
}


void ms(int[] arr, int lx, int rx)
{


   if(rx > lx)
   {

             int mid1 = (lx + rx)/2;
             int mid2 = mid1+1;

              ms(arr,lx,mid1);
              ms(arr,mid2,rx);
              sort(arr,lx,mid1,mid2,rx);
 }

}
private void button1_Click(object sender, EventArgs e)
{

   lbl1.Text = "Sorting ...";
   int[] test = { 0,5,2,3,1,3, 9, 0, 8, 1, 7, 2, 6, 3, 4 };
   ms(test, 0, test.Length - 1);
   lbl1.Text = "";
   for (int i = 0; i < test.Length; i++)
             lbl1.Text = lbl1.Text + test[i] + ",";
}
}
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 917
نویسنده : هادی مومنی

برنامه: بررسی وجود داشتن یا نداشتن عدد ورودی در آرایه

 

الگوریتم:

در این روش تک تک خانه های آرایه را مورد بررسی قرار می دهیم که آیا عدد مورد نظر (obj) در آن وجود دارد یا خیر.

 

int linear_search(int arr[],int arrsize, int obj)
{
         for(int i=0;i<arrsize;i++)
         {
                 if(arr[i] == obj)  
                 {
                         return i;
                 }
         }
          return (-1);
}

توسط دستورات بالا جست و جو انجام می شود که در صورت یافتن، مکان قرار گیری عنصر در آرایه( i )، و اگر هم عنصر مورد نظر یافت نشد مقدا 1- را بر می گرداند

 

*در دو برنامه سی شارپ و جاوااسکریپت ، تابع ، ابتدا آرایه ی ورودی را به یک آرایه از اعداد تبدیل می کند سپس توسط دستورات فوق ، عمل جست و جو را انجام می دهد.

آرایه ورودی باید بدون هیچ گونه فاصله ای به  این صورت وارد شود که بعد از هر عدد یک علامت کاما (  , ) قرار بگیرد.

مانند:

1,5,6,88,52,101,23,25,12,1,47,7,8,

 

 برنامه ی جست و جوی خطی به زبان ++C
 //Writed By barnamenevisi-ccj.mihanblog.com

#include
#include

#define size 10


int linear_search(int arr[],int arrsize, int obj)
{
    for(int i=0;i<arrsize;i++)
   {
      if(arr[i] == obj)  
      {
           return i;
       }
   }
   return (-1);
}

main()
{
int test[size]={2,6,4,8,3,5,9,7,1,0};
int object;
int result;

 cout<<"\n\nEnter Number to search it : ";
cin>>object;

result = linear_search(test,size,object);
if ( result == -1)
{
cout<<"\nNot Find :( .";
}
else{
cout<<"\nItem Founded in element "<<result+1<<" .";
}

getch();
return 0;
}

 

   برنامه ی جست و جوی خطی به زبان #C 
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//...................................................................................
int linear_search(string test,string objsearch)
{

   int i = 0;
   int test2size = 0;
   int obj = Int32.Parse(objsearch);

   for (i = 0; i < txt1.TextLength; i++)
         if (test[i] == ',')
                test2size++;

   int[] test2 = new int[test2size];
   test2size = 0;

   for (i = 0; i < txt1.TextLength; i++)
   {

        if (test[i] != ',')
             test2[test2size] = test2[test2size] * 10 + Int32.Parse(test[i].ToString());
       else test2size++;

   }


    for(i=0;i<test2size;i++)
   {
          if(test2[i] == obj)  
          {
                  return i;
          }
   }
   return (-1);

}

//..............................................................
public void button1_Click(object sender, EventArgs e)
{

int result = linear_search(txt1.Text , txt2.Text);

 

if (result == -1)
MessageBox.Show("Not Found");
else MessageBox.Show("Item Founded in element " + (result+1));

}
}
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 739
نویسنده : هادی مومنی

برنامه: پیدا کردن یک عدد در آرایه به روش دودویی یا Binary Search  

الگوریتم:

ابتدا آرایه ی ورودی را توسط یکی از روش های مرتب سازی (به عنوان مثال مرتب سازی حبابی یا Buble Sort)  که قبلا نوشته ایم ،مرتب کرده سپس با دستورات زید به جست و جو می پردازیم

 

int binary_search(int arr[],int arrsize,int obj)
{
     int first = 0;
     int last = arrsize;
     int middle = (first + last) / 2;

      while(last >= first)
      {
             if(arr[middle] == obj)
             {
                               return middle;
             }
              else if(arr[middle] > obj)
                     {
                            last = middle-1;
                            middle = (first + last) / 2;
                       }else
                              {
                                       first = middle+1;
                                       middle = (first + last) / 2;
                               }
           }
return -1;
}

ورودی ها عبارتند از: 

1 - یک آرایه (مرتب شده به صورت صعودی). (اگر آرایه نزولی مرتب شده باید جای ">"  ,  "<" را عوض کنیم)

2 - اندازه ی آرایه

3 - و عددی که باید دنباله آن بگردیم.

 

که در صورت پیدا کردن عدد در آرایه عنصر، اندیس آن و در غیر اینصورت عدد منفی یک ( 1- ) را بر می گرداند.

 

* نکات مربوط به کد سی شارپ و جاوااسکریپت

تکست باکس اول  آرایه ی ورودی را با این فرمت که پس از هر عدد یک " , " باشد(بدون هیچ فاصله ای) را گرفته و در تکست باکس دوم عددی را که باید به دنبال آن بگریم  از ورودی می گیریم.

 برنامه ی جست و جوی دودویی به زبان ++C
 //Writed By barnamenevisi-ccj.mihanblog.com

#include
#include

#define size 10
//--------------------------Buble Sort-------------------------------
void bubleSort(int num[],int numSize)
{
   int temp=0;
   for(int i=numSize;i>0;i--)
   {
           for(int j=0;j<i;j++)
                 if(num[j] > num[j+1])
                 {
                            temp = num[j];
                            num[j] = num[j+1];
                            num[j+1] = temp;
                  }
   }

}
//-----------------------Binary Search-------------------------------------
int binary_search(int arr[],int arrsize,int obj)

{
   int first = 0;
   int last = arrsize;
   int middle = (first + last) / 2;

   while(last >= first)
   {
           if(arr[middle] == obj)
           {
                     return middle;
            }
            else if(arr[middle] > obj)
                   {
                           last = middle-1;
                           middle = (first + last) / 2;
                   }else
                          {
                                first = middle+1;
                                middle = (first + last) / 2;
                           }
   }
return -1;
}
//--------------------------Main ------------------------------------
main()
{

   int test[size]={10,19,12,18,15,17,11,14,13,16};
   int searchobj=0;
   int flag;

   //sort array
   bubleSort(test,size-1);

   cout<<"Enter number to search : ";
   cin>>searchobj;

   flag = binary_search(test,size-1,searchobj);

   if(flag != -1)
                    cout<<"\nfind item in element "<<flag+1<<" .";
   else         cout<<"\nnot found.";

getch();
return 0;
}

 

   برنامه ی جست و جوی دودویی به زبان #C 
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//-----------------------Binary Search-------------------------------------
int binary_search(int[] arr, int arrsize, int obj)

{
   int first = 0;
   int last = arrsize;
   int middle = (first + last) / 2;

   while(last >= first)
   {
            if(arr[middle] == obj)
            {
                     return middle;
             }
            else if(arr[middle] > obj)
                   { 
                             last = middle-1;
                             middle = (first + last) / 2;
                   }else{
                                 first = middle+1;
                                 middle = (first + last) / 2;
                            }
    }
return -1;
}
//.............................Buble Sort........................................
int[] bubleSort(string test)
{
   int i = 0;
   int test2size = 0;

   for (i = 0; i < txt1.TextLength; i++)
         if (test[i] == ',')
               test2size++;

    int[] test2 = new int[test2size];
   test2size = 0;

    for (i = 0; i < txt1.TextLength; i++)
   {

        if (test[i] != ',')
                 test2[test2size] = test2[test2size] * 10 + Int32.Parse(test[i].ToString());
        else test2size++;

   }
   //sorting by buble sort algorithm
   int temp = 0;
   for (i = test2size - 1; i > 0; i--)
   {
             for (int j = 0; j < i; j++)
                      if (test2[j] > test2[j + 1])
                      {
                                 temp = test2[j];
                                 test2[j] = test2[j + 1];
                                 test2[j + 1] = temp;
                       }
   }

return test2;

}
private void button1_Click(object sender, EventArgs e)
{
   int flag;
   int[] test = bubleSort(txt1.Text);

   flag = binary_search(test, test.Length, Int32.Parse(txt2.Text));
   if (flag != -1)
   {
                 MessageBox.Show("Find item on element " + (flag + 1) + " .");
   }
   else MessageBox.Show("Not Found.");

}
}
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 4081
نویسنده : هادی مومنی

برنامه : محاسبه ی log و Ln اعداد.  

الگوریتم:

برای محاسبه لگاریتم و تابع نمایی از تعریف ریاضی زیر استفاده می کنیم

 

و درنهایت

 

برای محاسبه ی این دنباله به تابع محاسبه توان که قبلا نوشتیم نیاز داریم.

.با نوشتن کد زیر در تابع Ln کار محاسبه ی دنباله رو انجام میدیم

 

2*( (1 / temp )* (power(t,2*n+1)) )    که  temp =(2*n+1) ,t =(z-1)/(z+1)

دستور بالا تک جمله های دنباله ی بالا را به ترتیب از n=0 تا .... محاسبه و آنها را در متغیر result جمع می کند.

به این ترتیب Ln عدد محاسبه می شود و در نهایت در تابع Log با استفاده از فرمول ، لگاریتم را محاسبه می کنیم.

 

* حاصل جملات دنباله ی فوق به ازی n های بزرگتر ، کوچکتر می شود لذا با توجه به  شرط حلقه ی While ،زمانی از حلقه ی While خارج می شیم که اختلاف جمله ی فعلی از جمله ی قبلی به حداقل که رسیده باشه.در اینجه یک ضربدر ده به توان منفی 11.(هرچه این مقدار کوچکتر باشد حاصل دقیق تر هست.)

 

برنامه ی محاسبه لگاریتم و تابع نمایی به زبان ++c

double power(double x, int p);//x^p

double ln(double z)
{
   double t =(z-1)/(z+1);
   double result=0,oldResult=1;
   int n=0;
   double temp=0;
   while((oldResult < result?result - oldResult:oldResult -   result) > 0.00000000001)
   {
           oldResult = result;

           temp =(2*n+1);
           result =result + 2*( (1 / temp )* (power(t,2*n+1)) );

           n=n+1;
   }
return result;

}

 


double log(double x,double a)
{
       return ln(x)/ln(a);
}

 

  برنامه ی محاسبه لگاریتم و تابع نمایی به زبان #c
double power(double x, int p);//x^p

double ln(double z)
{
   double t = (z - 1) / (z + 1);
   double result = 0, oldResult = 1;
   int n = 0;
   double temp = 0;

   while ((oldResult < result ? result - oldResult : oldResult - result) > 0.000000000000001)
   {
             oldResult = result;
             temp = (2 * n + 1);

             result = result + 2 * ((1 / temp) * (power(t, 2 * n + 1)));

             n = n + 1;
   }
return result;

}

 

double log(double x, double a)
{
     return ln(x) / ln(a);
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 1202
نویسنده : هادی مومنی

برنامه: نمایش درخت دودویی با استفاده از آرایه توضیحات :

یک درخت دودویی رو به دو صورت میشه نمایش داد
1 - نمایش با آرایه
2 - نمایش با لیست پیوندی

در این قسمت نمایش درخت دودویی با استفاده از ارایه رو می خوایم پیاده کنیم.
همونطور که می دونید در این روش ،ریشه رو در خانه اول ارایه قرار میدیم و از قانون زیر پیروی می کنیم



* اگر عنصری در خانه ی i ام ارایه باشد آنگاه
           پدر ان در خانه ی جزوصحیح i/2 قرار دارد.
           فرزند چپ آن در خانه ی 2*i قرار دارد.
           فرزند راست آن در خانه ی 1+2*i قرار دارد.

*برای نمایش درختی با عمق k به ارایه ای با 2k-1 خانه نیاز داریم.


درخت ورودی را به صورت زیر از ورودی میگیریم.((فرزند راست ، فرزند چپ)پدر)



(F(B(A,D(C,E)),G(,I(H))))



الگوریتم:

تابع set آرایه ی []s که حاوی رشته ی فوق هست را به همراه ارایه ی []t که قرار هست درخت طبق قوانین بالا در ان ذخیره شود و متغیری که اندازه ی ارایه []s را در خود دارد را از ورودی گرفته و با چند دستور if عملیات را انجام می دهد.



 برنامه ی نمایش درخت با ارایه به زبان ++c
 void set(char s[],char[] t,int sSize)
{
    int i=0;
    int j=0;
    int depth=1,oldDepth=1;
    
    while(i < sSize)
    {
    if( s[i]=='(' )
    {
                 if(j==0) j=1;
                 else  j=2*j;
                 i=i+1;
    }
    else if( s[i]==',' )
    {
        j=j+1;
        i=i+1;
    }
    else if( s[i]==')' )
    {
        j=j/2;
        i=i+1;
    }
    else {
         
         t[j]=s[i];
         i=i+1;
         }
    }//end while
}//end function


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 775
نویسنده : هادی مومنی

برنامه:آرایه ای به طول size رو با روش جابجایی یا  exchangeSort به طور صعودی مرتب می کند

void exchangeSort(int s[],int size)
{
   int i,j;
   int temp;
   for(int i=0;i<size-1;i++)
        for(j=i+1;j<size;j++)
            if(s[i] > s[j])
            {
                    cout<<"\n Exchane "<<s[i]<<" by "<<s[j];
                    temp=s[i];
                    s[i]=s[j];
                    s[j]=temp;

            }
}
 
در واقع در هر مرحله اجرای حلقه ی دوم،  کوچکترین عنصر ارایه در خانه ی آی ام (به ترتیب خانه اول،دوم،و ...) قرار داده میشه.


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 769
نویسنده : هادی مومنی

برنامه:آرایه ای به طول size رو با روش انتخابی یا selectionSort به طور صعودی مرتب می کند

void selectionSort(int s[],int size)
{
   int i,j,smallest;
   int temp;

   for(int i=0;i<size-1;i++)
   {
        smallest=i;
        for(j=i+1;j<size;j++)
             if(s[j] < s[smallest])
                      smallest=j;

       cout<<"\n Exchane "<<s[i]<<" by "<<s[smallest];
       temp=s[i];
       s[i]=s[smallest];
       s[smallest]=temp;

   }
}


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : دو شنبه 19 خرداد 1393
بازدید : 790
نویسنده : هادی مومنی

برنامه:آرایه ای به طول size رو با روش درجی یا insertionSort به طور صعودی مرتب می کند

void insertionSort(int s[],int size)
{
   int i,j;
   int temp=s[1];
   for(i=1;i<size;i++)
   {
        j=i-1;;
        temp=s[i];
        while(j>=0 && s[j]>temp)
        {
                 cout<<"\n Moving s["<<j<<"] to s["<<j+1<<"]";
                 s[j+1]=s[j];
                 j--;
       }
       s[j+1]=temp;
    }

}
 
 


:: موضوعات مرتبط: پروژه #c , پروژه طراحی الگورتم , ,
تاریخ : یک شنبه 11 خرداد 1393
بازدید : 1409
نویسنده : هادی مومنی

 

برای دانلود کلیک کنید .



:: موضوعات مرتبط: پروژه برنامه سازی سیستم , ,
تاریخ : شنبه 10 خرداد 1393
بازدید : 986
نویسنده : هادی مومنی

 آموزش مبتدی نرم افزار Adobe Premiere Pro

 

 زبان: فارسی                                نوع فایل:    PDF                                                                 تعداد صفحات:  22

 

توضیحات

این کتاب آموزش فارسی نرم افزار ویرایش فیلم Adobe Premiere Pro می باشد. این آموزش به صورت یک فایل PDF در 22 صفحه تهیه شده است. این آموزش جدید بوده و مخصوص نسخه های Pro‌ می باشد و برای آخرین نسخه های پریمیر قابل استفاده است. قابل ذکر است که برنامه پریمر برنامه اصلی و حرفه ای ترین برنامه برای ویرایش فایلهای ویدیوئی می باشد.

 

برای دانلود کلیک کنید

 

 



:: موضوعات مرتبط: آموزشی , ,
تاریخ : شنبه 10 خرداد 1393
بازدید : 5657
نویسنده : هادی مومنی

using system.data.sqlclient;

//------------------------------------------------------------

sqlconnection sqlcon=new sqlconnection("server=.;database=اسم پایگاه داده که می خواهید مرتبط شوید;integrated security=true");

sqlcommand sqlcom=new sqlcommand();

sqlcom.connection=sqlcon;

sqlcon.open();

sqlcom.commandtext="دستورعملیاتی که می خواهید روی پایگاه داده و جداول انجام دهید که دقیقا همان دستور اس کیو ال است ";

sqlcom.executenonquery();

sqlcon.close();



:: موضوعات مرتبط: پروژه #c , آموزشی , ,
تاریخ : شنبه 10 خرداد 1393
بازدید : 790
نویسنده : هادی مومنی

نرم افزارم تبدیل پی دی اف به ورد

سایت تک موب

برای دانلود کلیک کنید.

 

 



:: موضوعات مرتبط: دانلود نرم افزار , ,
من هادی مومنی دانشجوی کارشناسی نرم افزار کامپیوتر و به زبان برنامه نویسی و طراحی صفحات وب تسلط دارم خوشحال میشم کمکتون کنم لطفا نظراتتون در مورد بهتر شدن این وبلاگ بگید.

نام :
وب :
پیام :
2+2=:
(Refresh)

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان کامپیوتر و آدرس hadi71.loxblog.com لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.






RSS

Powered By
loxblog.Com