PDA

View Full Version : اشکال در تعریف آرایه دو بعدی و قتی اندازه رو از ورودی می گیریم



shiva_h
چهارشنبه 22 خرداد 1387, 11:50 صبح
سلام

من می خوام اندازه یه آرایه رو به وسیله cin از ورودی بگیرم . اما error میده.
آرایه یک بعدی رو مشکل ندارم ولی دو بعدی رو مشکل دارم .

erorr:
1- size of m is unknown or zero in function main
و چند error دیگه

کد رو اینجور می نویسم

cin>>n;
int d[];
int m[][];

ممنون از راهنمایی .

A_Salimi
چهارشنبه 22 خرداد 1387, 12:38 عصر
این لینک (http://barnamenevis.org/forum/showthread.php?t=103518&highlight=malloc) رو ببین

star462
چهارشنبه 22 خرداد 1387, 15:48 عصر
سلام.اشکال اینه که آرایه شما ایستاست حافظه ی مربوط به آرایه ها ی ایستا در زمان کامپایل تخصیص پیدا میکنه یعنی ما مجاز نیستیم از کاربر تعداد عناصر آرایه بخواهیم اگر میخواهید از کاربر بخواهید باید آرایه پویا تعریف کنید که حافظه ی مربوط به آن در زمان اجرا تخصیص می یابد

shiva_h
سه شنبه 28 خرداد 1387, 08:51 صبح
می شه راهنمایی کنسد چه جوری آرایه دو بعدی رو پویا تعریف کنم ؟

mina mehdizadeh
سه شنبه 28 خرداد 1387, 09:31 صبح
long r = 20 , c = 30 ; // where r = number of rows and c is number of columns
long ** p = new long * [r] ;
for ( long i = 0 ; i < r ; i ++ )
p[i]=new long [c] ;


now you can use your array as

p [x][y] = m ; // where x < r and y < c and m is you number to be stored.

shiva_h
سه شنبه 28 خرداد 1387, 09:55 صبح
خیییلللییی ممنون .
جواب داد برنامم . اما فقط آخر بر نامم تو خروجی این بعد از اینکه خروجی صحیح رو چاپ می کنه این پیغام رو می ده .

NTLL POINTER ASSIGNMENT


می شه بگید دلیلش چیه و چی کار کنم ؟

A.S.Roma
سه شنبه 28 خرداد 1387, 13:39 عصر
خیییلللییی ممنون .
جواب داد برنامم . اما فقط آخر بر نامم تو خروجی این بعد از اینکه خروجی صحیح رو چاپ می کنه این پیغام رو می ده .

NTLL POINTER ASSIGNMENT


می شه بگید دلیلش چیه و چی کار کنم ؟

سلام

همیشه خروجی صحیح از آب در نمیاد !!
این نوشته یعنی اینکه شما در هنگام کار با Pointer ها درست دقت نکردید.
مثلا قبل از اینکه حافظه بگیرید اقدام به دستکاری محتوی حافظه کرده اید.

قطعه کدتان را یکبار دیگر بررسی کنید ...

حافظه باید به موقع تخصیص داده شود و بعد از اتمام کار فورا آزاد گردد.

خوش باشید ...

shiva_h
سه شنبه 28 خرداد 1387, 13:44 عصر
کد من این هست :


#include<values.h>
#include<iostream.h>
int p[6][6];
void order (int i,int j )
{
int k;
if (i==j)
cout<<"A"<<i;
else
{
k=p[i][j];
cout<<"(";
order(i,k);
order(k+1,j);
cout<<")";
}
}
int main()
{
int n;
int *d;
cout<<"Size of array d: ";
cin>>n;
cout<<endl;
int ** m = new int * [n] ;
for ( int i = 0 ; i < n ; i ++ )
m[i]=new int [n] ;
d=new int [n];
for ( i=0;i<=n;i++)
{
cout<<" Enter d["<<i<<"] value: ";
cin>>d[i];
cout<<endl;
}
for ( i=1;i<=n;i++)
{
m[i][i]=0;
}
int j, k,l,s=0;
for ( l=2;l<=n;l++)
{
for ( i=1;i<=n-l+1;i++)
{
j=i+l-1;
m[i][j]=MAXINT;
for ( k=i;k<=j-1;k++)
{
s=m[i][k]+m[k+1][j]+(d[i-1]*d[k]*d[j]);
if (s<m[i][j])
{
m[i][j]=s;
p[i][j]=k;
}
}
}
}
cout<<"The minimum multiply is : "<<m[1][6]<<endl;
cout<<"The best print of matrixes is : ";
order(1,6);
delete d;
delete m;
}