PDA

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



superboy2011
جمعه 26 اسفند 1390, 23:00 عصر
سلام

یه سوال داشتم

در cpp وقتی‌ می‌خوای آرایه تعریف کنی‌ باید از قبل معلوم باشه تعداد عناصر چند تاست و گرنه ارور میده

من تو dev-cpp امتحان کردم

از ورودی عدد n رو گرفتم و یک آرای n تایی‌ تعریف کردم ارور نداد حتی با آرایه کار هم کردم

کاملا درست کار میکرد در حالی‌ که تو cpp این کار اشتباهه و ارور حساب می‌شه می‌شه یه نفر بگه چرا درست کار می‌کنه؟

بهروز عباسی
جمعه 26 اسفند 1390, 23:14 عصر
از ورودی عدد n رو گرفتم و یک آرای n تایی‌ تعریف کردم ارور نداد حتی با آرایه کار هم کردم

کاملا درست کار میکرد در حالی‌ که تو cpp این کار اشتباهه و ارور حساب می‌شه می‌شه یه نفر بگه چرا درست کار می‌کنه؟

اگه میشه کمی بیشتر توضیح بده
شما میگی
و یک آرای n تایی‌ تعریف کردم خوب آرایه و تعداد عضوهاش معلوم شده چرا error بده:متفکر:

vistacali
شنبه 27 اسفند 1390, 10:59 صبح
درسته مهندس ارایه ها در سی مجموعه ای از عناصر مرتب و همگن و محدود هستن منظور از محدود هم میشه همون که از قبل تعداد عناصر اون مشخص است داخل زبان های شی گریی میتونی این کارو کنی من خودم هم خیلی این کارو کردم و از ورودی تعداد عناصر ارای رو گرفتم ولی در زبانهایی مثل سی نمیشه این کار رو کرد زیرا گفتم که عناصر ارایه از قبل مشخص است یکی از خوبی های زبانهای شی گرایی همون نکتش هست ولی خیلی هم همون نکته ضرر داره

Cancer
شنبه 27 اسفند 1390, 11:02 صبح
سلام سلام سلام
بنظر من این مشکل زیاد بزرگ نیست، چون می شه از اشاره گرها استفاده کرد. (برای آرایه پویا)

vistacali
شنبه 27 اسفند 1390, 11:05 صبح
[QUOTE=sam7sam7;1465929]اگه میشه کمی بیشتر توضیح بده
دوست من این دوست گرامیمون میخواد بیاد برنامه ای بنویسه که اول از وردی مقدار ارایه رو دریافت کنه و بعد اون مقدار رو بزاره به عنوان تعداد عناصر ارایه که در زبان ویژوال بیسیک میشه این کار رو انجا داد یعنی یک ارایه ای تعریف کن n عنصری و بعد بیا n را از ورودی بگیر و تعداد عناصر ارایه رو اینجوری مشخص کن کاری هست که توی برنامه های کوچیک استفاده میشه کرد ولی اشتباه هم هست زیرا برنامه بعدا اگر بخواد تغییری کنه با کلی مشکل مواجه میشه

Cancer
شنبه 27 اسفند 1390, 11:34 صبح
منظورت رو زیاد خوب متوجه نشدم.:گیج:
ولی فکر کنم که منظوره من این بود که یه آرایه می خوایم درست کنیم که تعداد عناصرش رو از کاربر بگیریم.
مثلاً:
int a[n];l
که n رو از کاربر بگیریم.
که اگه تو cpp به روش بالا بنویسیم خطا می ده.
برای همین هم باید از اشاره گرها استفاده کنیم.
اگه درست یادم بیاد باید این طوری می نوشتیم:

int *p = new int[n];

یا یه چیزی توی همین مایه ها.

vistacali
شنبه 27 اسفند 1390, 12:00 عصر
#include <iostream>
using namespace std;
int main()
{
int n,i;
cin>>n;
int *p = new int[n];

for(i=0;i<n;i++)
*(p+i)=i+1;

for(i=0;i<n;i++)
cout<<*(p+i)<<endl;

system("pause");
return 0;
}

اینم یک برنامه کوچیک که این کاررو میکنه بیا از ورودی رو هر چی خواستی وارد کن و اشاره گر از 0 تا اون عدد رو برات نمایش میده اینو نوشتم که فقط بدونی چطوری باید این کارو بکنی

پیروز موفق و سربلند باشید

hossenf
چهارشنبه 07 تیر 1391, 20:21 عصر
سلام
از زمان آخرین پست خیلی گذشته! اما چون هیچ جوابی داده نشده خوب دیدم توضیح بدم!

خیلی سادست! این جمله کاملا اشتباهه "در Cpp نمیشه ارایه با طول متغیر داشت!"

حالا چرا همه فکر میکنن نمیشه؟ چون استاندارد cpp رو نمیدونن!

طبق استاندارد سال 99 ( معروف به c99) میشود ارایه با طول متغیر استفاده کرد،

اما چرا خیلی ها براشون عجیبه؟ و فکر میکنن نمیشه؟

1.استفاده از کامپایلرهای قدیمی

2.استفاده از کامپایلر غیر استاندارد؛ مثلا ویژوال استیو که فکر کنم پرکاربردترین کامپایلر ++C توی ایران باشه! این استاندارد رو حتی در نسخه 2010 رعایت نمیکنه! اما dev که شما استفاده کردی از کامپایلر gcc استفاده میکنه که تقریبا تمام استاندارد هارو رعایت میکنه.(گویا ویژوال استیو بسیاری از استاندارد هارو رعایت نمیکنه)

جهت مطالعه بیشتر :

http://en.wikipedia.org/wiki/C99

http://msdn.microsoft.com/en-us/library/02y9a5ye.aspx

http://en.wikipedia.org/wiki/Variable-length_array

یا حق