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

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

  1. #1

    Tick سوال در مورد ارایه های بزرگ

    سلام من یک سوال از اساتید داشتم که ممنون میشم اگر پاسخ دهند. من وقتی در C++‎ یک ارایه سه بعدی مثلا با ابعاد 100*200*50 تعریف میکنم به محض اجرای برنامه خطای stack overflow به وجود میاید و برنامه اجرا نمیشود. میخواستم بدانم چطور میشود حافظه تخصیص یافته به کامپایلر( 6++visual C)را اضافه کرد تا بتوان ارایه های بزرگتر را تعریف کرد. ایا راههای دیگری نیز برای تعریف ارایه های بزرگ وجود دارد؟ ممنون

  2. #2
    از طریق منوی project به option یا properties پروژه بروید ، در آنجا به linker و در زیر شاخه system گزینه ای با نام stack reserves size وجود دارد که می توانید مثلا 20،000،000 بایت قرار دهید.

    اما در هر حال این روش پیشنهاد نمی شود و بهتر هست از طریق تخصیص حافظه پویا این آرایه را تولید کنید:

    int *x = new int[50*200*500];

    // Do something

    delete[] x;
    و برای دستیابی به این شکل:

    x[ 40 * 150 * 260 ] = 444;

  3. #3

    نقل قول: سوال در مورد ارایه های بزرگ

    با سلام
    خسته نباشید. میشه لطف کنید پاسخ این سوال رابفرستید؟
    برنامه ای که یک ماتریس 50*50 را تعریف کرده و مقادیر درون این ماتریس را با اعداد تصادفی پر کرده و سپس دترمینان این ماتریس را محاسبه کند؟( برنامه به زبان java باشد)

  4. #4

    نقل قول: سوال در مورد ارایه های بزرگ

    این روش درستی نیست، و خیلی Overlap داره، مثلا:

    x[ 20 * 20 * 10]
    x[ 10 * 20 * 20]
    x[ 20 * 10 * 20]
    x[ 10 * 200 * 2]

    همه به یک نقطه اشاره می کنند، و همه معادل [x[4000 هستند.

    یک روش برای این کار:

    #include <vector>

    const int nrows = 1000;
    const int ncols = 1000;
    std::vector<std::vector<int>> array;
    array.resize(nrows);
    for (int i = 0; i < nrows; i++)
    {
    array[i].resize(ncols);
    }

    برای مقداردهی:

    array[i][j]=200;

    موفق باشید.

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

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

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