نمایش نتایج 1 تا 6 از 6

نام تاپیک: مشکل در سورس برنامه

  1. #1

    Question مشکل در سورس برنامه

    سلام من برنامه ی 8 وزیر رو با استفاده از الگوریتم عقبگرد که در همین جا الگوریتم و برنامشو به زبان پاسکال گذاشته بودن نوشتم.
    تقریبا شبیه کد پاسکالشه ولی خطای زمان اجرا داره و خطاش مربوط به ارایشه که میگه
    Index was outside the bounds of the array.و هر جا که من ارایه رو به کار بردم این خطا رو داره.میشه دوستان کمکم کنند و بگن مشکل من چیه؟

    for (q = 0; q < 8; q++)
    Queense[q] = 0;
    numpos=0;
    q=1;
    while ((q!=0)&&(Queense[0]!=7))
    {
    safepos=false;
    while((Queense[q]<7)&&(!safepos))
    {
    Queense[q]++;
    safepos=true;
    n=1;
    while((n<q)&&(safepos=true))
    {
    safepos=((Queense[n]!=Queense[q])||((Queense[n]-Queense[q])!=(n-q)));
    n++;
    }
    }
    if (safepos == true)
    {
    if (q == 8)
    {
    numpos++;
    for (n = 0; n < 8; n++)
    label1.Text = Queense[n].ToString()+" ";
    }
    else q++;
    }
    else
    {
    Queense[q] = 0;
    q = q - 1;
    }
    }
    }

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: مشکل در سورس برنامه

    دوست خوبم تعریف آرایتو چک کردی ؟
    کاش می گفتی ارور رو در کدوم مرحله میده . حتما خودت متوجه شدی که ارور میگه اندیس آرایت خارج از محدوده است .
    بهترین راه در این جور مواقع trace برنامه است . ای جوری مچ خط خطا دار رو می گیری ولی اگه متوجه نشدی خطاشو ، تعریف آرایتم بذار ببینیم چی میشه !!!

  3. #3
    کاربر دائمی آواتار cups_of_java
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    1,544

    نقل قول: مشکل در سورس برنامه

    برنامتون رو debug کنید ببینید کجا متغیر هایی که برای اندیس آرایتون استفاده کردین مقدارشون داره منفی می شه و یا از اندازه آرایه بیشتر شده!

  4. #4

    Question نقل قول: مشکل در سورس برنامه

    نقل قول نوشته شده توسط cups_of_java مشاهده تاپیک
    برنامتون رو debug کنید ببینید کجا متغیر هایی که برای اندیس آرایتون استفاده کردین مقدارشون داره منفی می شه و یا از اندازه آرایه بیشتر شده!
    میشه بیشتر توضیح بدید
    اینم سورس کامل

    int[] Queense=new int[8];
    int numpos, q, n;
    bool safepos;
    public Form1()
    {
    InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    for (q = 0; q < 8; q++)
    Queense[q] = 0;//aval makane har vaziri ra sefr mikonad
    numpos=0;
    q=1;
    while ((q!=0)&&(Queense[0]!=8))
    {
    safepos=false;
    while((Queense[q]<8)&&(!safepos))
    {
    Queense[q]++;
    safepos=true;
    n=1;
    while((n<q)&&(safepos=true))
    {
    safepos=((Queense[n]!=Queense[q])||((Queense[n]-Queense[q])!=(n-q)));
    n++;
    }
    }
    if (safepos == true)
    {
    if (q == 8)
    {
    numpos++;//yek marhale anjam shod
    for (n = 0; n < 8; n++)
    label1.Text = Queense[n].ToString()+" ";
    }
    else q++;//mirim vazire badi ro baresi mikonim
    }
    else
    {
    Queense[q] = 0;
    q = q - 1;
    }
    }
    }

  5. #5
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: مشکل در سورس برنامه

    سورس شما رو چک کردم مشکل در خط
    while ((Queense[q] < 8) && (!safepos))
    ایجاد میشه که q مقدار 8 رو گرفته که آخرین اندیس آرایه شما 7 هست و خطا میدهد آرایه رو بزرگ کردم ولی الگوریتم جواب نمی دهد پس احتمالا اشکالات بیشتری در پیاده سازی شما از لحاظ مفهومی وجود دارد که من الگوریتمی که شما از اون استفاده کردید رو نمی دونم در اینجا یک پیاده سازی از الگوریتم ان وزیر براتون میزارم که از روی الگوریتم کتاب طراحی الگوریتم ترجمه جعفر نژاد پیاده سازی کردم

    using System;

    public class nqueens
    {
    int count = 0;
    static int n;
    static int[] col;

    public void queens(int i)
    {
    int j;
    if (promising(i))
    if (i == n)
    {
    count++;
    Console.WriteLine("hale{0}:",count);
    for (int c = 1; c <= n; C++‎)
    {
    Console.WriteLine("satre {0} ,sotone {1}", c, col[c]);
    }
    Console.WriteLine("");
    }
    else

    for (j = 1; j <= n; j++)//see if queen in (i+1)st row
    { //can be positioned in each of the n columns
    col[i + 1] = j;
    queens(i + 1);
    }
    }

    private bool promising(int i)
    {
    int k = 1;
    bool flag = true;//check if any queen threatens
    while (k < i && flag)//queen in the ith row
    {
    if (col[i] == col[k] || Math.Abs(col[i] - col[k]) == i - k)
    flag = false;
    k++;
    }
    return flag;
    }

    public static void Main(string[] args)
    {
    n = 8;
    col = new int[n + 1];
    nqueens MyClass = new nqueens();
    MyClass.queens(0);
    Console.ReadLine();
    }
    }
    برای تغییر در تعداد وزیر متغییر n را در تابع Main مقدار دهید.
    آخرین ویرایش به وسیله khaste_007 : دوشنبه 31 فروردین 1388 در 21:38 عصر

  6. #6

    نقل قول: مشکل در سورس برنامه

    مرسی از کمکتون

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •