PDA

View Full Version : سوال: اشکال منطقی در مشخص کردن اعداد تکراری در تکست باکس



weblox
دوشنبه 20 خرداد 1392, 22:01 عصر
سلام دوستان

یه جدول 9 تایی بازی سودکو را در نظر بگیرید.می خواهم در صورتی که اعداد تکراری باشد در بین این 9 خانه در متغیر ask مشخص بشه.
مشکل کد زیر چیست؟

private void button2_Click(object sender, EventArgs e)
{


int[] aaa=new int[9];
aaa[1] = int.Parse(textBox1.Text);
aaa[2] = int.Parse(textBox2.Text);
aaa[3] = int.Parse(textBox3.Text);
aaa[4] = int.Parse(textBox4.Text);
aaa[5] = int.Parse(textBox5.Text);
aaa[6] = int.Parse(textBox6.Text);
aaa[7] = int.Parse(textBox7.Text);
aaa[8] = int.Parse(textBox8.Text);
aaa[9] = int.Parse(textBox9.Text);

for (int j = 0; j < 9; j++)
for (int i = 0; i < 9; i++)
{
if (aaa[j] != aaa[i])

ask = "true";
else
ask = "false";
break;
}



label3.Text = ask;



}

afshin_1989
دوشنبه 20 خرداد 1392, 22:11 عصر
مشکل از break هست کافیه بریک داخل دستور if قرار بدی تا اولی را که پیدا کرد از حلقه بیاد بیرون و هم چنین اگر اشتباه نکرده باشم باید داخل حلقه اول هم باید یه if بزاری که اگر ask برابر true باشه break کنه مقدار اولیه ask هم باید false باشه.

weblox
دوشنبه 20 خرداد 1392, 22:32 عصر
به صورت زیر باز نویسی کردم .واقعا نمی فهمم مشکل از کجاست!

private void button2_Click(object sender, EventArgs e)
{

int[] aaa=new int[10];
aaa[1] = int.Parse(textBox1.Text);
aaa[2] = int.Parse(textBox2.Text);
aaa[3] = int.Parse(textBox3.Text);
aaa[4] = int.Parse(textBox4.Text);
aaa[5] = int.Parse(textBox5.Text);
aaa[6] = int.Parse(textBox6.Text);
aaa[7] = int.Parse(textBox7.Text);
aaa[8] = int.Parse(textBox8.Text);
aaa[9] = int.Parse(textBox9.Text);

for (int j = 1; j < 9; j++)
{
for (int i = 1; i < 9; i++)
{
if (aaa[j] == aaa[i])
{

ask = "false";

}
else
{

ask = "true";
}

}
if (ask=="false")
break;

}

label2.Text = ask;

}

afshin_1989
دوشنبه 20 خرداد 1392, 22:48 عصر
اقا مگه نمی خواهی با اولین تکرار از حلقه بیاد بیرون و مقدار ask هم برابر true باشه که یعنی تکرار به وجود امده؟

afshin_1989
دوشنبه 20 خرداد 1392, 22:52 عصر
for (int j = 1; j < 9; j++)
{
if (!ask)
{
break;
}
for (int i = 1; i < 9; i++)
{
if (aaa[j] == aaa[i])
{

ask = "false";
break;
}
else
{

ask = "true";
}

}



}

label2.Text = ask;

}
این کد امتحان کن. اگر اشتباه نکرده باشم کد خودت هم درسته ولی باید از حلقه داخلی هم break کنه

weblox
دوشنبه 20 خرداد 1392, 23:16 عصر
این کد امتحان کن. اگر اشتباه نکرده باشم کد خودت هم درسته ولی باید از حلقه داخلی هم break کنه

ممنون ولی کد شما هم همان مشکل را دارد.واقعا نمی فهمم مشکل کد پایین چی هست؟
private void button2_Click(object sender, EventArgs e)
{

int[] arr=new int[9];
arr[0] = int.Parse(textBox1.Text);
arr[1] = int.Parse(textBox2.Text);
arr[2] = int.Parse(textBox3.Text);
arr[3] = int.Parse(textBox4.Text);
arr[4] = int.Parse(textBox5.Text);
arr[5] = int.Parse(textBox6.Text);
arr[6] = int.Parse(textBox7.Text);
arr[7] = int.Parse(textBox8.Text);
arr[8] = int.Parse(textBox9.Text);

for (int j = 0; j < 9; j++)
{

for (int i = 1; i < 9; i++)
{
if (arr[j] == arr[i])
ask = "true";
else
ask = "false";
}
if (ask == "false")
break;

}

label2.Text = ask;
}

weblox
دوشنبه 20 خرداد 1392, 23:32 عصر
اقا مگه نمی خواهی با اولین تکرار از حلقه بیاد بیرون و مقدار ask هم برابر true باشه که یعنی تکرار به وجود امده؟

مقدار true یعنی تکرار نداشتیم.بله می خوام با اولین دو خونه تکراری بیاد بیرون و توی لیبل بنویسه false

afshin_1989
دوشنبه 20 خرداد 1392, 23:34 عصر
مجبورم کردی کد کامل نوشتم حالا امتحان کن
private bool ask = true;
private void button1_Click(object sender, EventArgs e)
{
int[] arr = new int[10];
arr[1] = int.Parse(textBox1.Text);
arr[2] = int.Parse(textBox2.Text);
arr[3] = int.Parse(textBox3.Text);
arr[4] = int.Parse(textBox4.Text);
arr[5] = int.Parse(textBox5.Text);
arr[6] = int.Parse(textBox6.Text);
arr[7] = int.Parse(textBox7.Text);
arr[8] = int.Parse(textBox8.Text);
arr[9] = int.Parse(textBox9.Text);

for (int j = 1; j <= 9; j++)
{
if (!ask)
break;
for (int i = 1; i <= 9; i++)
{
if (arr[j] == arr[i] && i != j)
{
ask = false;
break;
}
}


}

label1.Text = ask.ToString();
}
}

afshin_1989
دوشنبه 20 خرداد 1392, 23:35 عصر
امتحان کردی خبرم کن
توضیح اونجای که نوشتم i!=j یعنی اگر هر دو دارن به به یه خونه یکسان اشاره میکنن در نظر نگیر

weblox
دوشنبه 20 خرداد 1392, 23:53 عصر
امتحان کردی خبرم کن
توضیح اونجای که نوشتم i!=j یعنی اگر هر دو دارن به به یه خونه یکسان اشاره میکنن در نظر نگیر

ممنون.دست درد نکنه فقط یه مشکل داره اینه که وقتی یه بار false بشه دیگه هرچی تغییر بدی تو تکست ها درست نمیشه یعنی دیگه true نمیشه با درست پر کردن تکست باکس ها

afshin_1989
سه شنبه 21 خرداد 1392, 00:04 صبح
private bool ask = true;
private void button1_Click(object sender, EventArgs e)
{
int[] arr = new int[10];
arr[1] = int.Parse(textBox1.Text);
arr[2] = int.Parse(textBox2.Text);
arr[3] = int.Parse(textBox3.Text);
arr[4] = int.Parse(textBox4.Text);
arr[5] = int.Parse(textBox5.Text);
arr[6] = int.Parse(textBox6.Text);
arr[7] = int.Parse(textBox7.Text);
arr[8] = int.Parse(textBox8.Text);
arr[9] = int.Parse(textBox9.Text);

for (int j = 1; j <= 9; j++)
{
if (!ask)
break;
for (int i = 1; i <= 9; i++)
{
if (arr[j] == arr[i] && i != j)
{
ask = false;
break;
}
}


}

label1.Text = ask.ToString();
ask = true;
}
کافی بود بعد از تغییر نام لیبل دوباره ask برابر true بشه. یعنی بعد از خط
label1.Text = ask.ToString();

afshin_1989
سه شنبه 21 خرداد 1392, 00:06 صبح
یادت نره اگر مشکل داشت خبرم کن