PDA

View Full Version : استفاده از متغیر برای تعیین تعداد عنصر آرایه



mypdf123
پنج شنبه 16 خرداد 1392, 13:29 عصر
سلام دوستان

هر آرایه شامل n عنصر هست که باید موقع تعریف آرایه مشخص بشه که معمولا تو مثال هایی که من تو نت دیدم عدد ثابت هست اینطوری:

int a[5]

حالا من میخوام یک آرایه داشته باشم که تعداد عناصرش توسط کاربر تعیین بشه من تو vb.net اینکار رو بسادگی انجام دادم اما تو C++‎‎‎‎‎ درست عمل نمیکنه

تو vb.net

Dim b As Integer = Convert.ToInt32(TextBox1.Text)

Dim a(b) As Double


همینو تو سی ++ با ساختار دستوری سی پیاده میکنم و بجای textbox1 از دستور cin استفاده میکنم اما ارور میده
لطفا راهنمایی کنید

30plas+
پنج شنبه 16 خرداد 1392, 13:49 عصر
سلام .. من ی مثال نوشتم برات امیدوارم مشکلت حل بشه

#include <iostream>
using namespace std;
int main()
{
int b,i;
cin>>b;
int arr[b];
for(i=0;i<=b;i++)
{
cout<<"Enter arr["<<i<<"]: ";
cin>>arr[i];
cout<<"\n";
}
for(i=0;i<=b;i++)
{
cout<<arr[i]<<"\n";
}
return (0);
}

mypdf123
پنج شنبه 16 خرداد 1392, 13:57 عصر
با تشکر خط دوم using namespace std و خط هفتم
int arr[b
رو خطا میده . یعنی تو خط هفتم برنامه شما دقیقا همون اروری رو میده که از برنامه من میگیره... من از این برنامه استفاده میکنم Borland Turbo C++‎

constant expression required in function main()

30plas+
پنج شنبه 16 خرداد 1392, 14:02 عصر
خب شما لازم نیست خط دوم رو بذاری

ولی خط 7 مشکل کامپایلر ... من از codeblocks استفاده کردم

mypdf123
پنج شنبه 16 خرداد 1392, 14:11 عصر
خب هیچ راه دیگه ای نداره با همین کامپایلر؟

30plas+
پنج شنبه 16 خرداد 1392, 14:17 عصر
من با برلند کار نکردم .. صبر کن تا بچه های دیگه جوابتو بدن. شرمنده !

hadi0x7c7
پنج شنبه 16 خرداد 1392, 18:07 عصر
توی C یا C++ ارایه رو فقط میشه به صورت static تعریف کرد چون زمان کامپایل باید سایزش رو بدونه و از این صحبتا !
یه راه حل اینه که dynamic کار کنی مثل این:
#include <iostream>
using namespace std;

int main() {
int n;
cout << "How many elemetns do you have? ";
cin >> n;

int* dynamicArr = new int[n];

for(int i = 0; i < n; i++) {
dynamicArr[i] = rand() % 100;
}

for(int i = 0; i < n; i++)
cout << dynamicArr[i] << " ";
cout << endl;
}

developing
یک شنبه 19 خرداد 1392, 09:52 صبح
با سلام

اصولا کامپایلرهای ++C قدیمی که بورلند بود (خدا بیامرزش) و جدیدترش که می شه امبارکادرو (Embarcadero C++Builder) بدون نوشتن using namespace std; هم کار می کنن.
قدیم ترا (همون بورلند خدا بیامرز) اصلا این خط خودش یک خطا بود. اما جدیدا توی کامپایلرهای امبارکادرو (که جدیدترینش C++ Builder XE4 هست) نوشتن یا ننوشتنش فرق نمی کنه.

در ضمن نوشتن سرآیند ها در بورلند با نوشتن h. تموم می شه یعنی به جای iostream باید بنویسی iostream.h تا شناسایی بشه.