ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3

موضوع: آرایه ها

  1. #1
    2007/03/16
    843
    10

    آرایه ها

    سلام
    چند سوال در مورد ارایه ها در ++C دارم ممنون میشم جواب بدید
    روش تعریف ارایه های چند بعدی و ارایه هایی که اندازه انها قابل تغییر هست ؟
    اگر بخواهیم عناصر دو ارایه چند بعدی از نوع رشته ایی را که هر عنصر ان حاوی یک رشته باشد را با هم مقایسه کنیم به چه صورت عمل کنیم؟ مثلا محتویات دو عنصر از ارایه های
    [2][1]Array1 را با [1][2]Array2 مقایسه کنیم
    ممنون
  2. #2
    2008/02/01
    قائمشهر
    836
    0

    پاسخ : آرایه ها

    روش تعريف ارايه هاي چند بعدي و ارايه هايي که اندازه انها قابل تغيير هست ؟
    اگر بخواهيم عناصر دو ارايه چند بعدي از نوع رشته ايي را که هر عنصر ان حاوي يک رشته باشد را با هم مقايسه کنيم به چه صورت عمل کنيم؟ مثلا محتويات دو عنصر از ارايه هاي
    [2][1]Array1 را با [1][2]Array2 مقايسه کنيم
    سلام دوستان
    خب با كسب اجازه از صاحب نظران برنامه نويسي C++ عرض ميكنم.

    روش تعريف آرايه هاي چند بعدي . مثلا:

    int arr[10][12][13]


    خب اگه دقت كني در نحو زبان هاي خانواده ي سي مفاهيم اوليه ي كمي وجود داره كه ميشه اونا رو با يه كم دقت بسط داد.
    مثلا به مثال بالا دقت كن:
    اول يه ارايه ي 10 تايي از نوع int داريم . خب؟

    int arr[10]

    حالا يه آرايه ي 12 تايي از نوع آرايه ي اول داريم. (يعني هر خونه ي ارايه ي دوم ، يه ارايه از نوع ارايه ي اوله)

    int arr[10][12]

    بعد هم يه آرايه ي 13 تايي از نوع آرايه ي دوم داريم. (يعني هر خونه ي ارايه ي سوم ، يه ارايه از نوع ارايه ي دومه)

    int arr[10][12][13]

    پس ديده ميشه كه قاعده ي جديدي وجود نداره و از همون قاعده ي ارايه هاي تك بعدي استفاده شده.

    خب برا تعريف آرايه هاي با اندازه ي متغير با فرض اينكه منظور شما اينه كه وسط كار اندازه رو تغيير بديم ، ميتونيم از قابليتي كه در سي وجود داره و تو c++ هم ميشه ازش استفاده كرد استفاده كرد:

    int *arr=(int*) malloc(12);


    خب كد بالا كار همون new رو ميكنه كه تو c++ اضافه شده. ولي خويش اينه كه هم تو س كار ميكنه و هم اينكه فضاهايي كه با اين روش تخصيص داده ميشه با يه تابع ديگه به اسم realloc قابل بسطه.

    arr=(int*) realloc(arr,32);

    خب دستور بالا مقدار فضاي تخصيص داده شده به آرايه رو به 32 كاراكتر افزايش ميده.
    البته دقت كن كه اين دو دستور مقدار فضاي تخصيص داده شده رو به بايت ميگيرن و شما خودت بايد محسابه كني كه چند بايت نياز داري.
    مثلا برا آرايه ي int كه جديدش 4 بايتيه (نه 2بايت) كه 12 عضويه بايد 48 بايت تخصيص داد.

    بعد از اتمام كار برا آزاد كردن فضاي تخصيصي از تابع free استفاده ميشه:

    free(arr);


    دقت كن كه اين دو تابع براي آرايه هاي near هستن نه far. (اگه نميدوني چيه نميخواد توجه كني)

    اگه منظورت چيز ديگه اي بو بفرما تا توضيح بدم.
    Upload your files Here. Great Azeri Resumable File Host: http://endir.az/index.php?lang=5
  3. #3
    2008/02/01
    قائمشهر
    836
    0

    پاسخ : آرایه ها

    سلام
    اي بابا در مورد سوال آخري يادم رفت بنويسم:
    [2][1]Array1 را با [1][2]Array2 مقايسه کنيم
    خب باتوجه به اينكه آرايه هاي ما رشته اي هستن پس بايد 3 بعدي باشن.
    چون دو يه بعدش برا رشته بودن صرف ميشه و دو بعدشو شما نياز داري.
    خب براي اين منظور شما بايد از فايل هدر string استفاده كنيد. توابعي كه در اين هدر وجود دارن بدرد اين منظور ميخورن.
    مثلا strcmp كه string compare هست و از نامش معلومه چيكار ميكنه.
    اين تابع با آرايه هاي كاراكتري كه همون رشته ها هستن كار ميكنه و اونا رو با هم مقايسه ميكنه .
    چند بعدي بودن آرايه ي رشته اي هم هيچ پيچيدگي توكار ايجاد نميكنه. فقط بايد از عناصر آرايه كه رشته هستن استفاده كني. همين.
    خب چندتا از توابعو معرفي ميكنم كه بدردت ميخوره.
    strcmp==string compare
    stricmp==case insensitive string compare
    strncmp==first n characters string compare
    strnicmp==case insensitive first n characters string compare

    خب دو تابع اول برا مقايسه ي كل دو رشته اي هستند كه در ارگومان مي گيرند و دو تابع دوم براي مقايسه ي n كاراكتر اول دو رشته ي آرگومان هستند.

    دو تابع اول دو آرگومان رشته اي ميگيرند .
    دو تابع دوم دو ارگومان رشته اي و يك ارگومان int ميگيرند. (ارگومان سوم كه int است همان n است كه در بالا توضيح دادم)

    تابع اول و سوم بصورت case sensitive با رشته ها برخورد ميكنند.
    تابع دوم و چهارم بصورت case insensitive با رشته ها برخورد ميكنند.
    case sensitivity يعني اينكه حروف كوچك و بزرگ انگليسي در مقايسه متفاوتند. (توابع اول و سوم)

    خب مقدار بازگشتي از اين توابع int است كه اگر رشته ي اول از دوم بزرگتر باشد مثبت و اگر كوچكتر باشد منفي و اگر برابر باشد صفر است.


    Upload your files Here. Great Azeri Resumable File Host: http://endir.az/index.php?lang=5
نمایش نتایج: از 1 به 3 از 3

موضوعات مشابه

  1. آرایه ی دوبعدی
    توسط sparda1366 در انجمن Labview
    پاسخ: 7
    آخرين نوشته: 2013/06/20, 11:58
  2. آرایه ها در زبان c
    توسط a.moghadam در انجمن برنامه نويسي و اينترفيس
    پاسخ: 3
    آخرين نوشته: 2012/11/12, 01:26
  3. |!!| سوالاتی در باب آرایه ها در CV
    توسط masoud9 در انجمن میکروکنترلرهای AVR
    پاسخ: 12
    آخرين نوشته: 2011/11/14, 05:05
  4. تشخیص طول آرایه در C
    توسط MANSHADY.H در انجمن برنامه نويسي و اينترفيس
    پاسخ: 5
    آخرين نوشته: 2010/09/07, 22:55
  5. آرایه در بس کام
    توسط John Lock در انجمن میکروکنترلرهای AVR
    پاسخ: 27
    آخرين نوشته: 2009/06/06, 14:59

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

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