تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 243 از 326 اولاول ... 143193233239240241242243244245246247253293 ... آخرآخر
نمايش نتايج 2,421 به 2,430 از 3257

نام تاپيک: سوالات مبتدی و عمومی (++C, C) خود را اینجا بپرسید

  1. #2421
    داره خودمونی میشه Mohammad_Virus's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    کاشان
    پست ها
    73

    پيش فرض

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

    به این دلیل که اگر شما در خانه 0 و 0 باشید با استفاده از این دستور [i-1][j] اندیس برابر 1- شده و با ارور out of range مواجه خواهید شد معکوس این حالت برای انتهای ارایه نیز صدق میکند
    بله خودمم متوجه شده بودم کلا برای تمام خونه های سطر ها و ستون های اولیه و انتهایی چنین مشکلی وجود داره. اون دیگه باید توسط خودشون در نظر گرفته بشه. فکر می کنم مشکل دوستمون هم بیشتر توی کد نویسی باشه

  2. #2422
    اگه نباشه جاش خالی می مونه mehrdad_joon's Avatar
    تاريخ عضويت
    Jun 2009
    محل سكونت
    Hotel EJB
    پست ها
    450

    پيش فرض

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

    سوال دوم هم توسط [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] پاسخ داده شده. می تونید ببینید
    آرايه نوعي استفاده از اشاره گر هست.

    ببينيد،ما با يك اشاره گر به يك خونه اي از حافظه اشاره ميكنيم.از آنجايي كه خونه هاي حافظه پشت سر هم هستن،ميتونيد با اظافه كردن اشاره گر به مقدار يك به خونه ي حافظه ي بعدي رجوع كنيد.اين كار رو ميشه به صورت *(p+1) انجام داد .
    با اين روش ما ميتونيسم يك سلسله مراتبي از خونه هاي حافظه رو مقدار دهي كنيم،و بهشون دسترسي داشته باشيم اما!!
    مشكل اينجاست كه اون خونه هاي حافظه كه مقدار دهي شدن هيچ ثباتي ندارند.يعني هر لحظه ممكنه توسط زير برنامه ي ديگري overwrite بشن.براي حل اين منظور دو تا راه وجود داره كه يكي در سي و ديگري در سي++ هست.
    در سي:
    اين كا رو ما توسط تابع malloc انجام ميديم كه در فايل سرآمد alloc.h هست.اين تابع ،تعداد خانه هايي از يك نوع داده( صحيح،اعشاري،كاراكتر) در جايي از جافظه برامون رزرو ميكنه و اجازه overwrite شدن رو بهش نميده مگر توسط خود كاربر.
    تعريف تابع به اين صورته:
    Int w*;
    w=(datatype*)malloc(n*sizeof(datatype);
    براي مثال،براي نوع داده ي صحيح ميشه:
    w=(int*)malloc(n*sizeof(int));
    كه در اينجا n تعداد خانه هاي مورد نظر كاربره.
    الان ديگه ميتونيد به صورت يك آرايه باهاش رفتار كرده و همونطور به خونه هاي حافظه ي اشاره گر دسترسي داشته باشيد:
    w[1]=*(w+1)=0;

    ،ما به ساخت يك آرايه ي پويا رو ميگيم٠
    پس در نهايت ميشه گفت،آرايه نوعي اشاره گر است.

    اگر جاييش رو نفهميديد يا تابع سي++ اون هم ميخواستيد بگيد.
    موفق باشيد.
    Mehrdad Sh.

  3. این کاربر از mehrdad_joon بخاطر این مطلب مفید تشکر کرده است


  4. #2423
    داره خودمونی میشه Mohammad_Virus's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    کاشان
    پست ها
    73

    پيش فرض

    مهرداد جون واقعا لطف کردی
    اگه زحمت c++ رو هم بکشی ممنون میشم. من اینطوری با اشاره گر رشته تعریف می کنم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ولی نمی تونم از ورودی مقدار بگیرم. اگه جلوگیری از overwrite رو هم بگی دیگه خیلی عالی میشه
    بازم ممنون

  5. این کاربر از Mohammad_Virus بخاطر این مطلب مفید تشکر کرده است


  6. #2424
    در آغاز فعالیت ebi136934's Avatar
    تاريخ عضويت
    Aug 2012
    پست ها
    5

    پيش فرض

    سلام
    من باید یک بازی بنویسم که
    مثلا خرگوش از ورودی که صفر 0 اول هستش وارد میشه و باید به هویج یا در خروجی که همون صفر آخری هستش برسش .
    نکته: نکته اینجاست که فقط خرگوش میتونه از مسیر هایی حرکت کنه که صفر باشه و عدد 1 به منزله دیوار یا یک مانع می باشه
    ترو خدا کمک کنید فقط باید مسیر حرکت چاپ کنه فقط همین



    ترو خدا کمک کنید اینو باید پس فردا برسونم دست استادم.این خرگوش فقط مثال زدم وگرنه نمیخواد
    Last edited by ebi136934; 20-05-2013 at 14:31.

  7. #2425
    داره خودمونی میشه Mohammad_Virus's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    کاشان
    پست ها
    73

    پيش فرض

    سلام
    من باید یک بازی بنویسم که
    مثلا خرگوش از ورودی که صفر 0 اول هستش وارد میشه و باید به هویج یا در خروجی که همون صفر آخری هستش برسش .
    نکته: نکته اینجاست که فقط خرگوش میتونه از مسیر هایی حرکت کنه که صفر باشه و عدد 1 به منزله دیوار یا یک مانع می باشه
    ترو خدا کمک کنید فقط باید مسیر حرکت چاپ کنه فقط همین



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

    تمرین شما که خیلی خوبه. پروژه من خیلی داغونه. تا الان 211 خط نوشتم ولی هیچ کاری نکردم هنوز. الگوریتمش رو خودم پیش میرم و بعضی جاها که نمی دونم کدش رو چطوری بنویسم اینجا سوال می کنم. سعی کنید خودتون سوالات رو حل کنید

  8. #2426
    داره خودمونی میشه Mohammad_Virus's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    کاشان
    پست ها
    73
    Last edited by Mohammad_Virus; 21-05-2013 at 12:34.

  9. #2427
    کاربر فعال انجمن موبایل A.N.A.P's Avatar
    تاريخ عضويت
    Jan 2010
    محل سكونت
    Clouds
    پست ها
    3,023

    پيش فرض

    سلام. شما برنامه تون رو با چه نرم افزاري مينويسيد ؟ من Visual Studio 2010 دارم وقتي F5 يا Ctrl+F5 رو ميزنم ارور ميده و ديباگ نميشه برنامه .
    ارورش اينه :
    Unable to start program C:\Documents and settings\...\ali.exe
    The system can't find the file specified.

    غير از Visual Studio چه برنامه ي ديگه اي پيشنهاد ميكنيد ؟
    لطفا زود جواب بدين امتحان دارم :دي

  10. #2428
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2013
    پست ها
    30

    پيش فرض

    سلام دوستان
    من این چند تا کلاس رو نوشتم ولی نمی دونم چرا نمی شه از کلاس های چهر عمل شی گرفت میشه کمکم کنید!!!
    #include <iostream>
    #include <math.h>
    using namespace std;
    class operators
    {
    public:
    virtual float calculate(float ,float=0)=0;
    };
    class mainopr:public operators
    {
    public:
    // char ch;
    virtual float calculate(float ,float)=0;
    };
    class mathfunc:public operators
    {
    public:
    //char name[4];
    virtual float calculate(float)=0;
    };
    class plus:public mainopr
    {
    public:
    virtual float calculate(float right,float left){return left+right;}

    };
    class minus:public mainopr
    {
    public:
    virtual float calculate(float right,float left){return left-right;}

    };
    class multiplication:public mainopr
    {
    public:
    virtual float calculate(float right,float left){return left*right;}

    };
    class division:public mainopr
    {
    public:
    virtual float calculate(float right,float left){return left/right;}

    };


    int main()
    {
    mainopr *m=new plus;
    operators *p=m;
    cout<<p->calculate(2,3);
    return 0;
    }

  11. #2429
    اگه نباشه جاش خالی می مونه mehrdad_joon's Avatar
    تاريخ عضويت
    Jun 2009
    محل سكونت
    Hotel EJB
    پست ها
    450

    پيش فرض

    مهرداد جون واقعا لطف کردی
    اگه زحمت c++ رو هم بکشی ممنون میشم. من اینطوری با اشاره گر رشته تعریف می کنم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ولی نمی تونم از ورودی مقدار بگیرم. اگه جلوگیری از overwrite رو هم بگی دیگه خیلی عالی میشه
    بازم ممنون



    عزيز شما با كد بالا يه رشته تعريف كرديد به اسم s. ولي!!!!در 'حقيقت' يك اشاره گر تعريف كرديد كه به خانه اي از حافظه از اشاره كرده و آن و خانه هاي متوالي بعد از آن (كه به صورت يك بايتي در نظر گرفته ميشوند،چون از نوع كاراكتر تعريف شدن) را مقدار دهي ميكند.
    الان در اولين خانه مقدار f و در ٤ خانه ي بعدي نيز مقدار f مقداردهي شده.
    شما با دستور s[0] ميتونيد به اولين خانه ي حافظه اي كه s اشاره ميكنه دسترسي پيدا كنيد كه f هست.يعني دقيقا ميتونيد به صورت يك آرايه ،ولي نامحدود و ناثبات رفتار كنيد.
    براي اينكه اجازه ي overwrite شدن رو به اون فضايي از حافظه كه ميخوايم در اختيار نداشته باشم رو نديم،بايد از كامپيلر درخواست كنيم كه او حافظه رو برامون رزرو كنه و در اختيار زيربرنامه اي ديگر نزاره.
    در سي با تابع malloc كه قبلا توضيح دادم و در سي ++ با تابع new قابل دسترسي است.

    Mytype *fb=new Mytype [n];
    كه mytype نوع داده مون هست،در اصل نوع ترتيب ذخيره سازي بلوك هاي حافظه است و ميتونه ثابت يا اعشاري و.. باشه.n هم تعداد خانه هاي حافظه اي است از نوع داده ي مورد نظر هست.fb هم اسم اشاره گر مورد نظره.
    يادت باشه كه mytype ها بايد يكسان باشند و در آخر براي داشتن برنامه اي بهينه،بعد از اتمام استفاده ،آن مقدار حافظه ي ذخيره شده رو آزاد كني از طريق تابع delete.
    مثال:

    int *mohammad=new int [100];

    delete [100] mohammad;

    اين دقيقا كاري هست كه كامپايلر،وقتي كاربر يك آرايه تعريف ميكنه انجام ميده.
    ولي،مهمترين تفاوتش اين هست كه مقدار تعداد خانه هاي حافظه در آرايه "بايد" قبل از زمان كامپايل مشخص باشه ،اون هم به مقدار ثابت(عدد) ولي در ساختار بالا،اينطور نيست.به همين دليل به اين ميگيم آرايه ي پويا.
    مثلا در مرتب سازي mergesort مرتب آرايه به دو زير آرايه تبديل ميشن و اندازه ي زير آرايه ها بستگي به اندازه ي آرايه و اينكه كدامين بازگشت هست ربط داره و نميشه مقدار دهيه اوليه كرد و اينجا به اين ساختار نياز پيدا ميكني.
    در نهايت هم اين هم بگم كه ،با تابع free() در ساختار malloc ميتونيد حافظه ي درخواست شده را آزاد كنيد.

    موفق باشي محمد.

    Mehrdad Sh.

  12. این کاربر از mehrdad_joon بخاطر این مطلب مفید تشکر کرده است


  13. #2430
    اگه نباشه جاش خالی می مونه mehrdad_joon's Avatar
    تاريخ عضويت
    Jun 2009
    محل سكونت
    Hotel EJB
    پست ها
    450

    پيش فرض

    سلام. شما برنامه تون رو با چه نرم افزاري مينويسيد ؟ من Visual Studio 2010 دارم وقتي F5 يا Ctrl+F5 رو ميزنم ارور ميده و ديباگ نميشه برنامه .
    ارورش اينه :
    Unable to start program C:\Documents and settings\...\ali.exe
    The system can't find the file specified.

    غير از Visual Studio چه برنامه ي ديگه اي پيشنهاد ميكنيد ؟
    لطفا زود جواب بدين امتحان دارم :دي
    سلام.
    عزيز شما در منو ي Build، روي Clean Solution بريد و بعد در همان منو Rebuild solution رو بزنيد.اگر درست نشد ،يك بار از برنامه خارج شيد و دوباره rebuild كنيد.
    گه گاهي هم علت نمايش اخطار بالا ،درست نبودن برنامه است.

    در عين حال،ميتونيد از Borland C 5 كه كار با اون نسبتا راحت تر هست استفاده كنيد.

    Mehrdad Sh.

  14. این کاربر از mehrdad_joon بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •