PDA

نسخه کامل مشاهده نسخه کامل : کمک در آرایه ها در C++



Vb1471
18-10-2012, 18:51
سلام دوستان من یک برنامه نوشتم که میخوام یک آرایه 100 عنصری رو تعریف کنه و مقادیر رو داخلش قرار بده بعدش میخوام مثلا یک خانه به آخرین خانه آرایه اضافه کنم و مقدار

بهش بدم و در آخر هم میخوام این امکان رو داشته باشه که وسط آرایه یک خانه اضافه و بقیه خانه ها رو شیفت بدم به سمت راست .


ممنون میشم اگر کمکم کنید . فقط قسمت شیفت دادن و اضافه کردن رو مشکل دارم .

god of war 2
18-10-2012, 22:09
سلام.
کارتون به عنوان یک نمونه تمرینی خوبه ولی در واقعیت کاملا اشتباه هست. هرنوع تغییر در سایز و اندازه آرایه های خام مقدار زیادی (با توجه به اندازه آرایه) سربار کپی رو شامل میشه. یعنی زمانی که شما یک خانه به آرایه اضافه کنید در اصل در نقطه دیگری از حافظه آرایه ای با طول جدید ایجاد میشه سپس کل آرایه قبلی در اون کپی میشه و در نهایت آرایه اولیه آزاد میشه.
پیشنهاد میکنم از vector استفاده کنید که این عملیات رو بصورت بهینه شده و با الگوریتم های بهتر برای شما انجام میده. در اصل vector همان آرایه داینامیک هست.
vector:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Vb1471
18-10-2012, 22:53
ممنون دوست عزیز بابت راهنمایی خوبتون . من دقیقا همچین چیزی میخوام :


اول یک آرایه تعریف کنم :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]



اینم کد این قسمت کد :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید





دوم : یک خانه به آرایه اضافه کنم :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

که متاسفانه کدش رو نمیدونم ؟ ولی میدونم که باید آخرین خانه آرایه را پیدا کنی و بعد بهش یکی اضافه بشه .



سوم اینکه : وسط آرایه هر جایی خواستم یک خانه اضافه کنم و بقیه باید شیف برن به راست ولی کدش رو نمیدونم باز :


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]




ممنون میشم با توجه به توضیحات این کد رو در اختیار بنده قرار بدید

god of war 2
19-10-2012, 20:44
که متاسفانه کدش رو نمیدونم ؟ ولی میدونم که باید آخرین خانه آرایه را پیدا کنی و بعد بهش یکی اضافه بشه .
کد و الگوریتم این قسمت داخل پست قبلی بود. در ++C امکان از پیش تعریف شده ای برای اینکه شما یک خانه به انتهای یک آرایه خام اضافه کنید وجود ندارد و خود شما باید این کارو انجام بدید مثل همون نمونه ایی که مثال زدم.



سوم اینکه : وسط آرایه هر جایی خواستم یک خانه اضافه کنم و بقیه باید شیف برن به راست ولی کدش رو نمیدونم باز :

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

Vb1471
19-10-2012, 21:38
بیایم یک کاری بکنیم اصلا یک ارایه 100 تایی تعریف کنیم بعد 10تا خانه را پر کنیم بعد در آخر بیایم بگیم در خانه 11 بیا این عدد رو از ورودی بگیر و قرار بده و اما برای شیفت دادن در وسط آرایه این کد رو اگر میشه با ذکر

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

BehiJJ
20-10-2012, 20:04
سلام دوستان
من تو تاپیک آموزش مبتدی مطلب گذاشتم ولی جواب درست و حسابی نگرفتم.
من می خام برنامه ای (همراه با الگوریتم) بنویسم که دو آرایه از نوع عدد صحیح که هر کدام 10 عنصر داشته باشه و عناصر متناظر رو با هم جمع و در آرایه سوم قرار بده.
اگه براتون امکان داره به زبون C بهم بگین، خیلی فلفوره.
:sq_9:

god of war 2
22-10-2012, 12:45
بیایم یک کاری بکنیم اصلا یک ارایه 100 تایی تعریف کنیم بعد 10تا خانه را پر کنیم بعد در آخر بیایم بگیم در خانه 11 بیا این عدد رو از ورودی بگیر و قرار بده و اما برای شیفت دادن در وسط آرایه این کد رو اگر میشه با ذکر

مثال قرار بدید ممنون میشم . اگر میشه این کار رو با وکتور انجام بدید .
توسط وکتور این کار بسیار ساده انجام میشود. مثال:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من می خام برنامه ای (همراه با الگوریتم) بنویسم که دو آرایه از نوع عدد صحیح که هر کدام 10 عنصر داشته باشه و عناصر متناظر رو با هم جمع و در آرایه سوم قرار بده.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید