ورود

View Full Version : سوال: سوال در رابطه با آرایه ها



X.Hijacker
جمعه 27 دی 1392, 16:53 عصر
سلام دوستان .

دو سوال در رابطه با ارایه ها دارم که بسیار تا بسیار مهم هستند.

1. مثلا ما یک عدد 4 رقمی را هر رقمش را با رند (rand())با مد 10 حساب میکنیم
یه ارایه داشته باشیم :
x[10]={1,2,3,4,5,6,7,8,9}

حالا اگر بخواهیم اون 4 عدد اولی که به صورت رند حساب کردیم رو از این ارایه حذف کنیم به چه شکل است ؟

2. سوال بعدیم اینه که چه طوری میشه دو تا ارایه رو با هم جمع کرد یا به نوعی دیگه به یه عدد صحیح تبدیلش کرد
مثلا توی ارایه ام دارم :

x[1]={1,2}

و یه ارایه دیگه هم دارم :
n[1]={3,4}

بیاد کاری کنه که 12 را با 34 جمع کنه !

ممنون :)

Ananas
جمعه 27 دی 1392, 17:53 عصر
سلام.

حالا اگر بخواهیم اون 4 عدد اولی که به صورت رند حساب کردیم رو از این ارایه حذف کنیم به چه شکل است ؟
یا با حلقه از اول شروع میکنید و جابجا میکنید و یا از تابعی مثل memcpy استفاده می کنید.

. سوال بعدیم اینه که چه طوری میشه دو تا ارایه رو با هم جمع کرد یا به نوعی دیگه به یه عدد صحیح تبدیلش کرد
c++ همچین دستور آماده ای رو نداره. باید الگوریتمش رو پیاده کنید. میتونید تابعی به نام Add تعریف کنید که ورودی هاش آرایه ها و طولشون هست که به روش معمولی بیاد در یک حلقه رقم به رقم جمع کنه و رقم باقیمانده رو نگه داره برای مرحله ی بعد.
------------------------------------------
اما استفاده از vector بهتره. چون شما میتونید یک سری عملیات ضروری و پراستفاده رو با دستورات vector انجام بدید. مثلا حذف چند رقم از ابتدا. یا اضافه کردن چند رقم به انتها یا تغییر سایز آرایه. یا گرفتن سایز فعلیه آرایه.
------------------------------------------
اما روش دیگه برای عملیات ریاضی روی اعداد صحیح اینه که از عملیات بیتی استفاده کنید. نه رقم-رقم ذخیره کردن عدد. مثلا برای اینکه بخواید یک عدد با 18 رقم رو با روش آرایه ای از بایت ها شبیه سازی کنید، مقدار حافظه ی لازم برای این عدد حداقل برابر با 18 بایت! در حالی که با روش باینری حداکثر با 8 بایت میتونید این کارو انجام بدید. این در حالیه که در روش آرایه برای هر رقم از بایت استفاده کنید... که اگر از int استفاده کنید میشه 72 بایت! ولی برای تبدیلش به رشته و چاپ اون، روش آرایه خیلی راحته.