سلام دوستان،یه سوال داشتم این که تو زبان سی چطور میشه یه ماتریس n*n تعریف کرد،یعنی ماتریسی که مرتبش نامعلومه و تو روند برنامه توسط کاربر تعیین میشه بعد با توجه به مقداری که کاربر به n میده درایه های ماتریس یکی یکی توسط خود کاربر گرفته میشهint n;وقتی همچین برنامه ای مینویسم ارور میده و میگه n حتما باید یه عدد مشخص و ثابت باشه راهی نیست که بشه یه همچین ماتریسی تعریف کرد؟
cin n;
float a[n]
می تونی از یه روش مثل این استفاده کنی تا مشکلت حل بشه:
کد:#include<iostream.h> #include <stdio.h> int main() { int x; cin>>x; int *myArray; //Declare pointer to type of array myArray = new int[x]; //use 'new' to create array of size x myArray[3] = 10; //Use as normal (static) array delete [] myArray; return 0; }
این طوری که من فعلا یاد گرفتم ماتریس دو بعدی رو نمی شه هر دو بعد شو متغیر در نظر گرفت. اصلا کلا تو چند بعدی ها فقط یک بعد شو می شه تو برنامه تعیین کرد! البته فک کنم تو بحث کلاس ها بشه این کارو کرد! فهمیدم بهتون می گم!
می تونی یه جور دیگه مشکلته و حل کنی! کامپیوتر و گول بزنی! همین روشی که SHRP گفته رو استفاده کن منتها به از یک بعد، خودت دو بعدی استفاده کن! یعنی چی! یعنی به جای x در دستور
کد:
myArray = new int[x]
بنویس i_max * j_max
بعدش که می خوای فراخوانی ش کنی یا مثلن له عنصر i,j رجوع کنی بنویس j * i_max + i یعنی ماتریس 2 بعدی تو به صورت یه ماتریس یک بعدی تعریف کن که آرایه هاش رو براساس یه استانداردی به هم ربط می دی. مثل نرم افزار متلب که مثلا یه ماتریس 3 در 5 داشته باشی ش به اسم A اونوقت عبارت A ه 7 واسش معنی داره! یه جوری ربطش می ده به عنصر 2 و 2.
اگه اشتباه می کنم اصلاح کنید
فک کنم جواب بده!