PDA

View Full Version : مبتدی: ایجاد متغییر بسته به مقدار شمارنده حلقه



shaghayegh.s
سه شنبه 02 خرداد 1391, 17:13 عصر
من می خوام بسته به شمارنده حلقه for متغییر جدیدی بسازم ,برای مثال اگر شمارنده دارای مقدار 4 است متغییری با نام a4 و اگر شمارنده دارای مقدار 7 است متغییری با نام a7 بسازم .آیا امکان چنین کاری در سی شارپ هست؟
در واقع من با دیتا گرید سودوکوی 9 در 9 ایجاد کردم اما به ازای هر جدول سودوکو یک رکورد در بانک اطلاعاتی دارم
می خواهم در حلقه for و توسط tryparse چک کنم آیا مقدار هر سلول عددی است یا نه و در صورت عددی بودن ,مقدار سلول را در متغییر جداگانه ای ذخیره کنم , بعد توسط commandtext با دستور insert و با به کارگیری این متغییر ها درتغییرات را در بانک اطلاعات را ذخیره کنم.
خیلی ممنون می شم اگه کسی بتونه کمکی بهم بکنه.

ROSTAM2
سه شنبه 02 خرداد 1391, 20:01 عصر
از آرايه استفاده كنيد

shaghayegh.s
چهارشنبه 03 خرداد 1391, 07:48 صبح
از آرايه استفاده كنيد

به آرايه هم فکر کردم اما مشکل اين است که فکر مي کنم بايد مقدار هر يک از خانه هاي آرايه رادر يک پارامتر کپي کنم و از پارامتر ها در دستورinsert استفاده کنم آيا اين روش درست است؟

فرید نجفلو
چهارشنبه 03 خرداد 1391, 12:46 عصر
به آرايه هم فکر کردم اما مشکل اين است که فکر مي کنم بايد مقدار هر يک از خانه هاي آرايه رادر يک پارامتر کپي کنم و از پارامتر ها در دستورinsert استفاده کنم آيا اين روش درست است؟

سلام
بله درسته

ولی می ونید با کد های پایین یک آریه دو بعدی n x n رو به یک رشته تبدیل و در دیتابیس ذخیره و دو باره از دیتابیس خونده و به همون آرایه تبدیل کنید
با این کار دیگه نگران ابعاد آرایه نیستید و نیاز به چندین فیلد و پارامتر (تو مثال شما 81 فیلد و پارامتر!!!) ندارید

توابع به همراه مثال:

private void YourSub()
{
string[,] SodokoAry = new string[8,8];
//پرکردن آرایه جهت آزمایش توابع
Random rnd= new Random();
for (int i = 0; i <= SodokoAry.GetUpperBound(0); i++)
for (int j = 0; j <= SodokoAry.GetUpperBound(1); j++)
SodokoAry[i, j] = rnd.Next(1, 9).ToString();
//پرکردن آرایه جهت آزمایش توابع

//تبدیل آرایه به رشته
string AryToStr = ArrayTOString(SodokoAry);
//اینجا رشته در یتابیس ذخیره می شود
//-----------------------------------------
//اینجا رشته از دیتابیس خوانده می شود
// تبدیل رشته به آرایه
string[,] StrToAry = StringToArray(AryToStr);

}
private string ArrayTOString(string[,] ary, char Bound1Seperator = '|', char Bound2Seperator = ',')
{
string Result = "";
for (int i = 0; i <= ary.GetUpperBound(0); i++)
{
string SubStr="";
for (int j = 0; j <= ary.GetUpperBound(1); j++)
SubStr += ary[i, j] + Bound2Seperator;
Result += SubStr.TrimEnd(Bound2Seperator) + Bound1Seperator;
}
return Result.TrimEnd(Bound1Seperator);
}

private string[,] StringToArray(string str, char BoundSeperator = '|', char Bound2Seperator = ',')
{
string[] Bound1Values = str.Split(BoundSeperator);
int Bound1Size = Bound1Values.GetUpperBound(0)+1;
int Bound2Size = Bound1Values[0].Split(Bound2Seperator).GetUpperBound(0)+1;
string[,] Result = new string[Bound1Size, Bound2Size];
for(int i=0 ;i<Bound1Size;i++)
{
string[] Bound2Values =Bound1Values[i].Split(Bound2Seperator);
for (int j=0;j<Bound2Size;j++)
Result[i,j]=Bound2Values[j];
}
return Result;
}