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

نام تاپیک: ایجاد آرایه ای از اشیاء

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    مشهد
    پست
    52

    ایجاد آرایه ای از اشیاء

    با عرض سلام؛
    بنده می خواستم آرایه ای دو بعدی از node ها ایجاد کنم. پس طبیعتاً ابتدا کلاسی به نام bstnode.cs ایجاد کردم بدین صورت:


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using System.ComponentModel;

    namespace tree
    {
    class bstnode
    {
    public int[] gn=new int[8];
    public int[] hn=new int[8];
    public string name;
    public bstnode[] child=new bstnode[8];

    public bstnode()
    {
    int i;
    for (i = 0; i < 8; i++)
    {
    gn[i] = 0;
    hn[i] = 0;
    }
    }
    }
    }


    و سپس یک کلاس bst.cs ایجاد کردم بدین صورت:


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace tree
    {
    class bst
    {

    public void create(int h, int w)
    {
    int i, j;
    Random r = new Random();
    bstnode[,] map = new bstnode[h, w]; ///////My Problem
    for (i = 0; i < h; i++)
    {
    for (j = 0; j < w; j++)
    {
    map[i, j].name = "City " + i.ToString() + " , " + j.ToString();

    if (i - 1 >= 0)
    {
    map[i, j].gn[0] =r.Next(50, 300);
    map[i, j].hn[0] =r.Next(map[i, j].gn[0] - 70, map[i, j].gn[0]);
    }
    if (i - 1 >= 0 && j + 1 < w)
    {
    map[i, j].gn[1] = r.Next(50, 300);
    map[i, j].hn[1] = r.Next(map[i, j].gn[1] - 70, map[i, j].gn[1]);
    }
    if (j + 1 < w)
    {
    map[i, j].gn[2] = r.Next(50, 300);
    map[i, j].hn[2] = r.Next(map[i, j].gn[2] - 70, map[i, j].gn[2]);
    }
    if (i + 1 < h && j + 1 < w)
    {
    map[i, j].gn[3] = r.Next(50, 300);
    map[i, j].hn[3] = r.Next(map[i, j].gn[3] - 70, map[i, j].gn[3]);
    }
    if (i + 1 < h)
    {
    map[i, j].gn[4] = r.Next(50, 300);
    map[i, j].hn[4] = r.Next(map[i, j].gn[4] - 70, map[i, j].gn[4]);
    }
    if (i + 1 < h && j - 1 >= 0)
    {
    map[i, j].gn[5] = r.Next(50, 300);
    map[i, j].hn[5] = r.Next(map[i, j].gn[5] - 70, map[i, j].gn[5]);
    }
    if (j - 1 >= 0)
    {
    map[i, j].gn[6] = r.Next(50, 300);
    map[i, j].hn[6] = r.Next(map[i, j].gn[6] - 70, map[i, j].gn[6]);
    }
    if (i - 1 >= 0 && j - 1 >= 0)
    {
    map[i, j].gn[7] = r.Next(50, 300);
    map[i, j].hn[7] = r.Next(map[i, j].gn[7] - 70, map[i, j].gn[7]);
    }

    }
    }
    }//End create

    /*public void preorder(bstnode t, ListBox id, ListBox name)
    {
    if (t != null)
    {
    id.Items.Add(t.gn);
    name.Items.Add(t.name);
    preorder(t.left, id, name);
    preorder(t.right, id, name);
    }
    }

    public void inorder(bstnode t, ListBox id, ListBox name)
    {
    if (t != null)
    {
    inorder(t.left, id, name);
    id.Items.Add(t.gn);
    name.Items.Add(t.name);
    inorder(t.right, id, name);
    }
    }

    public void postorder(bstnode t, ListBox id, ListBox name)
    {
    if (t != null)
    {
    postorder(t.left, id, name);
    postorder(t.right, id, name);
    id.Items.Add(t.gn);
    name.Items.Add(t.name);
    }
    }

    public Boolean insert(int x, string n)
    {
    bstnode cur = root;

    if (root == null)
    {
    root = new bstnode(x, n);
    return root != null;
    }

    for (; ; )
    {
    if (x <= cur.gn)
    {
    if (cur.left != null)
    {
    cur = cur.left;
    }
    else
    {
    cur.left = new bstnode(x, n);
    return cur.left != null;
    }
    }
    else
    {
    if (cur.right != null)
    {
    cur = cur.right;
    }
    else
    {
    cur.right = new bstnode(x, n);
    return cur.right != null;
    }

    }
    }
    }//end insert*/
    }
    }


    و سپس به وسیله ی دو تکست باکس طول و عرض آرایه رو گرفتم و در رویداد کلیک btncreate این کد رو نوشتم:


    private void btncreate_Click(object sender, EventArgs e)
    {
    int row, col;
    row=Convert.ToInt32(txtheight.Text);
    col=Convert.ToInt32(txtwidth.Text);
    bs.create(row, col);

    }//End btncreate


    برنامه اجرا می شه، امّا هنگامی که می خوام از اشیاء آرایه استفاده کنم، خطا می ده و به عبارتی دیگر کاملاً واضحه که اون قسمت از کدی که با کلمه ی My Problem مشخص کردم، آرایه ای دو بعدی از اشیاء رو به درستی Create نمی کنه!

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    مشهد
    پست
    52

    نقل قول: ایجاد آرایه ای از اشیاء

    در ضمن اون سبز ها رو اصلاً کار نداشته باشید

  3. #3
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: ایجاد آرایه ای از اشیاء

    ببینید، وقتی شما یک آرایه از اشیا با new درست میکند، فقط یک شی "آرایه" درست کردین که جای مثلا n x m شی از نوع مورد نظر رو داره. یعنی شما n x m شی درست نکردین، بنابراین

    map[i, j].name = "City " + i.ToString() + " , " + j.ToString();

    مشکل داره چون، شی j , i ام هنوز ساخته نشده. قبلش، شما باید به ازای هر خانه، یک شی درست کنید و در آرایه قرار بدین:

    //....
    for (i = 0; i < h; i++)
    {
    for (j = 0; j < w; j++)
    {
    map.SetValue(new bstnode(), i, j);
    map[i, j].name = "City " + i.ToString() + " , " + j.ToString();
    // ....

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    مشهد
    پست
    52

    نقل قول: ایجاد آرایه ای از اشیاء

    خیلی ممنون واقعاً لطف کردین. از سایر دوستانی که به سوال بنده نگاه کردن تشکّر می کنم.

تاپیک های مشابه

  1. ایجاد آرایه کنترلها در زمان طراحی
    نوشته شده توسط mohammad diba در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 23 تیر 1386, 15:39 عصر
  2. کمک برای ایجاد آرایه ای از PictureBox
    نوشته شده توسط Parsa_2006 در بخش VB.NET
    پاسخ: 2
    آخرین پست: یک شنبه 06 خرداد 1386, 01:00 صبح
  3. ایجاد آرایه چند بعدی
    نوشته شده توسط H/-\mid در بخش C#‎‎
    پاسخ: 5
    آخرین پست: یک شنبه 26 فروردین 1386, 13:33 عصر
  4. ایجاد آرایه دوبعدی به صورت پویا
    نوشته شده توسط mousamk در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 4
    آخرین پست: دوشنبه 06 شهریور 1385, 12:12 عصر
  5. پاسخ: 7
    آخرین پست: جمعه 28 بهمن 1384, 10:58 صبح

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

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