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

نام تاپیک: مشکل در فرستادن یه آرایه از کلاس به یک تابع

  1. #1

    Question مشکل در فرستادن یه آرایه از کلاس به یک تابع

    سلام

    من این کلاس رو دارم
    class Student
    {
    public :
    int Avg;
    };


    Student *Array_Of_Stu = new Student[Max];


    Sort(Array_Of_Stu Avg[]


    حالا میخوام عنصر Avg از Array_Of_Stu رو به عنوان یه آرایه به یک تابع بفرستم. اما این ارور رو نشون میده

    Sort(Array_Of_Stu Avg[][

  2. #2
    کاربر دائمی آواتار BeginnerProgrammer
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    کرمانشاه
    پست
    232

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    لطفا کدو کامل بذارید

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1390
    محل زندگی
    تهران
    پست
    91

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    class Student
    {
    public :
    int Avg;
    };

    /definitions
    Sort(Student *stus)
    {
    ...
    }

    //allocating
    Student *stu = new Student[Max];

    //pass
    Sort(Student);

  4. #4

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    نقل قول نوشته شده توسط _hamid مشاهده تاپیک
    class Student
    {
    public :
    int Avg;
    };

    /definitions
    Sort(Student *stus)
    {
    ...
    }

    //allocating
    Student *stu = new Student[Max];

    //pass
    Sort(Student);
    ممنون که پاسخ دادید
    اما من میخوام Avg رو به Sort بفرستم.

  5. #5
    کاربر دائمی آواتار jeson_park
    تاریخ عضویت
    دی 1387
    محل زندگی
    گچساران
    سن
    33
    پست
    595

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    سلام
    فکر کنم این به دردتون بخوره

    #include <stdio.h>

    class Student
    {
    public :
    int Avg;
    };

    void Sort(Student *stus,int a)
    {
    printf("%d",stus->Avg);

    }



    int main(void)

    {
    //allocating
    Student *stu = new Student[10];

    //pass
    Sort(stu,stu->Avg);


    getchar();



    return 0;

    }



  6. #6

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    ممنون که کمک میکنید
    این سورس برنامه من میخوام Avg از کلاس Student رو به تابع Sort بفرستم.

    # include <iostream.h>
    # include <conio.h>

    # define Max 4

    class Student{
    public :
    int Avg;
    };

    Student *Array_Of_Stu = new Student[Max];

    void Insert();
    void Sort(int a[]);

    int main(void)
    {
    Insert()
    Sort(new Array_Of_Stu Avg[])
    return 0;
    }

    void Insert()
    {
    int count;

    clrscr();

    for(int i = 0 ; i < Max; i++)
    {
    cout<<"\n---------- Enter Avg Of Student : ";
    cin>> Array_Of_Stu[i].Avg;
    }
    }

    void Sort(int a[])
    {
    int i, j, x;
    for(i = 0; i < Max - 1; i++)
    for(j = i + 1; j < Max; j++)
    if (a[i]>a[j])
    {
    x = a[i];
    a[i] = a[j];
    a[j] = x;
    }
    cout<<a[Max-1];
    }

  7. #7
    کاربر دائمی آواتار BeginnerProgrammer
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    کرمانشاه
    پست
    232

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    این کد اجرا میشه بعد از گرفتن 4 عدد ماکس رو چاپ میکنه

    # include <iostream>
    # include <conio.h>
    using namespace std;
    # define Max 4

    class Student{
    public :
    int Avg;
    };

    Student *Array_Of_Stu = new Student[Max];

    void Insert();
    void Sort(Student *);

    int main(void)
    {
    Insert();
    Sort(Array_Of_Stu);
    return 0;
    }

    void Insert()
    {
    int count;

    //clrscr();

    for(int i = 0 ; i < Max; i++)
    {
    cout<<"\n---------- Enter Avg Of Student : ";
    cin>> Array_Of_Stu[i].Avg;
    }
    }

    void Sort(Student* a)
    {
    int i, j, x;
    for(i = 0; i < Max - 1; i++)
    for(j = i + 1; j < Max; j++)
    if (a[i].Avg>a[j].Avg)
    {
    x = a[i].Avg;
    a[i].Avg = a[j].Avg;
    a[j].Avg = x;
    }
    cout<<a[Max-1].Avg;
    }

  8. #8

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    این کد اجرا میشه بعد از گرفتن 4 عدد ماکس رو چاپ میکنه
    خیلی ممنونم جواب داد ولی من میخوام این تابع رو به عنوان تابع سورت در برنامه استفاده کنم.
    بنابراین باید avg را از ورودی بگیرد.برای این مشکل باید چه کار کنم.
    از اول هم مشکل همین بود و گرنه میشد کل کلاس رو به تابع فرستاد و از یک عنصر اون استفاده کرد.

  9. #9
    کاربر دائمی آواتار BeginnerProgrammer
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    کرمانشاه
    پست
    232

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    اینکه شما بخواین آرگومان ورودی تابعتون آرایه int باشه، باید کل اعدادی که قراره sortبشن یکجا داشته باشین کد خودتونم که نمیشه چون شما دارین یک آرایه از نوع کلاستون ایجاد میکنید و این به این معنا نیست که عضوهای کلاس هم در یک آرایه باشه. بنظرم اگه آرایه intگلوبال تعریف کنید و همونجا تو تابع insert که اعداد رو میگیره تو این آرایه هم ذخیره کنه،بعد تو main برنامه این آرایه رو به تابع sort ارسال کنید

  10. #10
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    توی کامپیوتر
    پست
    282

    نقل قول: مشکل در فرستادن یه آرایه از کلاس به یک تابع

    با سلام

    من فكر مي كنم در منطلق برنامه يه كم مشكل هست.
    1- اولا اگه يه آرايه از كلاسها ايجاد كنيد پس بايد براي مرتب كردن آن هم تابع (sort)شما بايد يه پارامتر ورودي داشته باشه كه آرايه اي از كلاستون رو دريافت كنه نه آرايه اي از عدد. مثل:

    #include <iostream>
    #include <conio.h>
    using namespace std;
    #define Max 4

    class Student{
    public :
    int Avg;
    };

    Student *Array_Of_Stu = new Student[Max];

    void Insert();
    void Sort(Student *);

    int main(void)
    {
    Insert();
    Sort(Array_Of_Stu);
    getch();
    return 0;
    }

    void Insert()
    {
    for(int i = 0 ; i < Max; i++)
    {
    cout<<"\n---------- Enter Avg Of Student : ";
    cin>> Array_Of_Stu[i].Avg;
    }
    }

    void Sort(Student* a)
    {
    int i, j, x;
    for(i = 0; i < Max - 1; i++)
    for(j = i + 1; j < Max; j++)
    if (a[i].Avg>a[j].Avg)
    {
    x = a[i].Avg;
    a[i].Avg = a[j].Avg;
    a[j].Avg = x;
    }
    cout<<a[Max-1].Avg;
    }



    2- اگه مي خواين كه تابع sort شما آرايه اي از عددها رو بگيره و مرتب كنه كه بايد تعريف كلاستون رو عوض كنيد.مثل:

    #include <iostream>
    #include <conio.h>
    using namespace std;
    #define Max 4

    class Student{
    public :
    int Avg[Max];
    };

    Student list;

    void Insert();
    void Sort(int[]);

    int main(void)
    {
    Insert();
    Sort(list.Avg);
    getch();
    return 0;
    }

    void Insert()
    {
    for(int i = 0 ; i < Max; i++)
    {
    cout<<"\n---------- Enter Avg Of Student : ";
    cin>> list.Avg[i];
    }
    }

    void Sort(int a[])
    {
    int i, j, x;
    for(i = 0; i < Max - 1; i++)
    for(j = i + 1; j < Max; j++)
    if (a.Avg[i]>a.Avg[j])
    {
    x = a[i].Avg;
    a.Avg[i] = a.Avg[j];
    a.Avg[j] = x;
    }
    cout<<a.Avg[Max-1];
    }



    در برنامه هاي بالا اشتباه شما در موارد زير است:
    در خطوط 8و 11 و14و 19و 29 و 33 و 38و 40و 41و 42و 44

    هرگاه نمونه ي جديدي از كلاس را ايجاد و به تابع ارسال كنيد تمام اطلاعاتي كه در نمونه ي قبلي ذخيره شده است پاك مي شود.

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

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