PDA

View Full Version : آرایه دو بعدی



roya67
شنبه 30 آذر 1387, 12:23 عصر
سلام ، من می خوام داخل برنامه ام m و n رو از کاربر بگیرم و یه آرایه 2 بعدی m*n تولید کنم
چطوری می شه؟

nasrin55
شنبه 30 آذر 1387, 13:24 عصر
فرض کن n تعداد سطر و m تعداد ستون ها باشد باید از new استفاده کنی

int ** m = new int *[n]; f

for (int i=0; i< n; i++) f

m[i]= new int [m]f



( f ها ی آخر هر سطر ندید بگیر)

obscure
شنبه 30 آذر 1387, 13:42 عصر
#include<conio.h>
#include<iostream.h>
int main()
{
int n,m;
cout<<"enter n&m:";
cin>>n>>m;
int a['n']['m'];
return 0;
}

pars.engineer
یک شنبه 01 دی 1387, 02:02 صبح
#include<conio.h>
#include<iostream.h>
int main()
{
int n,m;
cout<<"enter n&m:";
cin>>n>>m;
int a['n']['m'];
return 0;
}


دوست عزيز كد شما صد درصد اشتباه است.



int a['n']['m'];

ما به هيچ عنوان نمي توانيم به مقدار متغير حافظه استاتيك بگيريم.

دليل اينكه برنامه شما ERROR نمي دهد نيز اين است كه شما m و n را داخل سينگل كوتيشن قرار داده ايد. در واقع براي شما يك آرايه با ابعاد كد اسكي m برابر 109 و كد اسكي n برابر 110 ايجاد مي كند و هيچ ارتباطي با مقدار متغيرهاي mو n كه شما تعريف نموده ايد ندارند.(اشتباهاتي از اين قبيل عواقبي به شدت وخيم دارند به طوري كه من با ديدن كد شما در حالي كه اصلا وقت نداشتم لازم ديدم اين پست را بگذارم تا ديگران اشتباه شما را تكرار نكنند)

در زبان C براي حافظه دايناميك گرفتن از دستور malloc و در ++C از روشي كه دوستمان در دو پست قبل گذاشته است استفاده مي شود.


موفق باشيد.

obscure
یک شنبه 01 دی 1387, 09:26 صبح
pars.engineer عزیز منم دو سه روز پیش تو همین سایت یه تاپیک شبیه این بود من به طرف گفتم آرایه پویا بسازه.یعنی مثالشم زدم واسش ولی یکی اومد گفت این راه درسته منم به شک انداخت.
http://barnamenevis.org/forum/showthread.php?t=136287