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

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




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 12

نام تاپيک: قرار دادن عدد در استرینگ در c++

  1. #1
    پروفشنال vahid-p's Avatar
    تاريخ عضويت
    Jan 2010
    محل سكونت
    دانشكده مهندسی کامپیوتر امیرکبیر-نرم افزار ( سابقا م.پز
    پست ها
    969

    پيش فرض قرار دادن عدد در استرینگ در c++

    مشکل من اینه :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    میگه نوع کاراکتر مشکل داره. و از طرفی چون تعداد اعدادی که لازم دارم ذخیره کنم بیشتر از یک میلیون عدده از آرایه نوع دیگه نمیشه استفاده کرد. وگرنه بهتر بود حتی از آرایه عددی استفاده میکردم.
    چون من میخوام اندیس های یک آرایه رو در آرایه دیگری ذخیره کنم.
    مثلا
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خلاصه به علت بزرگ بودن آرایه تا 100000 درایه قبول میکنه ولی یک میلیون نه. از char هم نمیشه استفاده کرد چون از 9 که بیشتر شد دو رقمی میشه و مشکلات خاص خودش رو خواهد داشت.

    چیکار کنم؟

  2. #2
    پروفشنال vahid-p's Avatar
    تاريخ عضويت
    Jan 2010
    محل سكونت
    دانشكده مهندسی کامپیوتر امیرکبیر-نرم افزار ( سابقا م.پز
    پست ها
    969

    پيش فرض

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

  3. #3
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    درود....
    میشه بپرسم که این یک میلیون داده برا چی میخواد بره تو یه ارایه؟!؟ اخه شما برنامه رو که ببندی، همش پریده!!!! اگرم میخوای بریزی تو دیتابیس که دیگه....!!!!

    به هر صورت، Long Int مقدار بزرگتر از اینت هستش... لانگ اینت ۳۲ بیتی هستش و تا ۲ میلیارد عدد رو میتونه بگیره!!

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


  5. #4
    کـاربـر بـاسـابـقـه god of war 2's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    585

    پيش فرض

    آرایه یک میلیون عضوی از نوع int که 32 bit اندازه هر عنصر اون (البته در سیستم عامل های 32 بیتی) هست فقط 3 مگابایت از حافظه رو اشغال میکنه.
    فقط تنها مشکلی که در کدهای شما هست روش گرفتن حافظه هست.معمولا در این جور مواقع باید بصورت داینامیک از سیستم حافظه بگیرید.
    قطعه کد زیر یک نمونه از این روش هست.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  6. 2 کاربر از god of war 2 بخاطر این مطلب مفید تشکر کرده اند


  7. #5
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    انساین اینت با لانگ اینت چه تفاوتی دارن؟
    انساین منفی نمیگیره نه؟ و لانگ اینت منفی میگیره.........اطلاعی دارین که لانگ اینت چقد حافظه میگیره؟!

  8. #6
    اگه نباشه جاش خالی می مونه p d's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    قبرستون
    پست ها
    449

    پيش فرض

    انساین اینت با لانگ اینت چه تفاوتی دارن؟
    انساین منفی نمیگیره نه؟ و لانگ اینت منفی میگیره
    همینطوره.
    اطلاعی دارین که لانگ اینت چقد حافظه میگیره؟!
    معمولا به این شکل است(تاکیید بر معمولا) که long مقدار حافطه رو 2برابر میکنه.
    مثلا اگه کامپایلر شما برای int ا2 بایت در نطر بگیره .برای long int میشه 4 بایت.
    البته کامپالر های جدید تر 4 بایت برا Int در نطر میگیرند.

  9. این کاربر از p d بخاطر این مطلب مفید تشکر کرده است


  10. #7
    اگه نباشه جاش خالی می مونه p d's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    قبرستون
    پست ها
    449

    پيش فرض

    مشکل من اینه :

    میگه نوع کاراکتر مشکل داره. و از طرفی چون تعداد اعدادی که لازم دارم ذخیره کنم بیشتر از یک میلیون عدده از آرایه نوع دیگه نمیشه استفاده کرد. وگرنه بهتر بود حتی از آرایه عددی استفاده میکردم.
    چون من میخوام اندیس های یک آرایه رو در آرایه دیگری ذخیره کنم.
    خلاصه به علت بزرگ بودن آرایه تا 100000 درایه قبول میکنه ولی یک میلیون نه. از char هم نمیشه استفاده کرد چون از 9 که بیشتر شد دو رقمی میشه و مشکلات خاص خودش رو خواهد داشت.
    اولا long double عددی بسیار بزرگتر از این چیزا رو ذخیره میکنه.
    دوما اگه عددتون خیلی خیلی بزرگه معمولا از string استفاده میکنن.
    سوما شما داری ارایه ای از Int به اندازه ی 100000 تعریف میکنی . میشه 100000 * 4 بایت که تو هر 4 بایت میخوای 1 عدد 1 رقمی بریزی ؟ چه کاریه واقعا ؟

  11. #8
    پروفشنال vahid-p's Avatar
    تاريخ عضويت
    Jan 2010
    محل سكونت
    دانشكده مهندسی کامپیوتر امیرکبیر-نرم افزار ( سابقا م.پز
    پست ها
    969

    پيش فرض

    ببینید مشکل در int یا long long int نیست که. چون اعدادم اونقدرا زیاد نمیشن فوقش تا 1 میلیون (شش رقم ). مهم تعداد عناصر آرایست که P d درست میفرمایند و حافظه زیادی رو میبره. خب برای همین هم میگم که برنامه هنگ میکنه.
    اما راه حلی ندادین بهم.
    منم خودم گفتم که برای اینکه بتونم یک میلیون عنصر رو تو یه متغیر ذخیره کنم، متغیرم رو از نوع String انتخاب میکنم. اما مشکل اینه که باید بتونم از هر عنصر یک عدد حداکثر شش رقمی بگیرم. که کار کردن باهاش راحت باشه. یکی از راهاش تبدیل عدد به رشته و رشته به عدده که مشکلش رو گفتم که از نوع char میشه استفاده کرد ولی از string نه. از char استفاده کنم که باز مشکلش اینجاست که هر عنصر میشه یک عدد یک رقمی نه یک عدد شش رقمی. پس مجبورم از String استفاده کنم که استرینگ برای کار با itoa و atoi مشکل داره. تازه اینا هم کلی زمان بره برای اجراش(حتی اگه براش تابع بنویسم تا خیلی برنامه پیچیده نشه ولی تو اجراش باز زمان بیشتری رو میبره ).
    چون برای اجرای این برنامه سنگین حداکثر دو ثانیه وقت دارم.

    اگه امکان پذیر نیست بگید تا به فکر الگوریتم دیگه ای باشم.
    ممنون

  12. #9
    پروفشنال vahid-p's Avatar
    تاريخ عضويت
    Jan 2010
    محل سكونت
    دانشكده مهندسی کامپیوتر امیرکبیر-نرم افزار ( سابقا م.پز
    پست ها
    969

    پيش فرض

    اینو که کپی کردم هنگ نکرد :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ولی میشه در مورد ساختار و تفاوتش با حالت های معمولی توضیح بدین؟
    Last edited by vahid-p; 29-05-2012 at 14:47.

  13. #10
    کـاربـر بـاسـابـقـه god of war 2's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    585

    پيش فرض

    ولی میشه در مورد ساختار و تفاوتش با حالت های معمولی توضیح بدین؟
    ببینید زمانی که یک برنامه برای اجرا بارگزاری میشه در یک پشته (Stack) قرار میگیره. این پشته بسته به نوع سیستم عامل دارای حافظه محدودی هست(در حد چند مگابایت).وقتی شما یک آرایه از متغییر های اتوماتیک مثل زیر
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    تعریف میکنید این متغییر از حافظه پشته مربوط به برنامه استفاده میکنه همونطور که گفتم این حافظه محدود هست و ممکنه به اندازه کافی فضا برای آرایه شما نداشته باشه و در نهایت اجرا با مشکل مواجه میشه.
    ولی زمانی که شما از حافظه heap برای ایجاد آرایتون استفاده (heap-allocated) میکنید مثل زیر:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    دیگر محدودیت خاصی ندارید تنها محدودیت شما مقدار حافظه فیزیکی سیستمتون (فضای آزاد RAM) هست و میتونید به اندازه کل فضای آزاد RAM تخصیص حافظه انجام بدید.
    فاکتور ها و مسائل فنی زیادی با توجه به نوع برنامه وجود داره که تعیین میکنه چه موقع از فضای Heap استفاده بشه و چه موقع از فضای Stack و توضیحش از وقت و حوصله بنده خارج هست.

  14. 2 کاربر از god of war 2 بخاطر این مطلب مفید تشکر کرده اند


صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

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

User Tag List

برچسب های این موضوع

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

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