PDA

View Full Version : تغییر حد در حلقه فور



saed2006
یک شنبه 16 خرداد 1389, 13:58 عصر
توی حلقه فورم مقدار count در حال تعییر هست برای اینکه در هر بار اجرای کد داخل فور متغییر های فور با مقادیر جدید بار گذاری شوند چه کدی لازمه؟
مثال:


for (int i = 0; i < finalmatris.Count; i++)
{
ArrayList Dt = (ArrayList)finalmatris[i];
if (Dt.Count <= 1)
{
finalmatris.RemoveAt(i);
;
}
}

hamidreza20
یک شنبه 16 خرداد 1389, 14:17 عصر
سلام استاد گرامی

به نظر بنده حقیر از حلقه while استفاده کنید و خودتون کنترلش کنید...

التماس دعا...

mohsensaghafi
یک شنبه 16 خرداد 1389, 15:33 عصر
سلام دوست عزیز.
در خانواده C تفاوتی بین دستور for و while از نظر مفهومی وجود نداره. اگر count هم در حال تغییر باشه، مهم نیست چون هر بار دوباره این متغییر رو که می خواد چک کنه مقدارش رو update می کنه. پس مشکلی واست بوجود نمی آره این کد.

hamidreza20
یک شنبه 16 خرداد 1389, 16:59 عصر
سلام دوست عزیز.
در خانواده C تفاوتی بین دستور for و while از نظر مفهومی وجود نداره. اگر count هم در حال تغییر باشه، مهم نیست چون هر بار دوباره این متغییر رو که می خواد چک کنه مقدارش رو update می کنه. پس مشکلی واست بوجود نمی آره این کد.

نه دوست گرامی فقط یکبار ان هم در هنگام ورود به حلقه مقدار آن را به طور ثابت قرار می دهد.
بهتر است اول چک کنید و بعد پست بزنید...
التماس دعا...

mohsensaghafi
دوشنبه 17 خرداد 1389, 21:56 عصر
نه دوست گرامی فقط یکبار ان هم در هنگام ورود به حلقه مقدار آن را به طور ثابت قرار می دهد.
بهتر است اول چک کنید و بعد پست بزنید...
التماس دعا...

دوست عزیز و گرامی.
چیزی رو که من گفتم تو ++C چکش کرده بودم. تو #C هم چکش کردم الان حرف من درسته.
به نظرتون این کد چکار می کنه و آیا اصلا کار می کنه یه نه؟!

for (int i = 0;listBox1.Items.Count<10; i++)
listBox1.Items.Add(i);
موفق و پیروز
یا علی!

hamidreza20
سه شنبه 18 خرداد 1389, 08:27 صبح
دوست عزیز و گرامی.
چیزی رو که من گفتم تو ++C چکش کرده بودم. تو C#‎ هم چکش کردم الان حرف من درسته.
به نظرتون این کد چکار می کنه و آیا اصلا کار می کنه یه نه؟!

for (int i = 0;listBox1.Items.Count<10; i++)
listBox1.Items.Add(i);
موفق و پیروز
یا علی!

صد البته که کار می کنه چون شما حد بالای حلقه را که هر بار مقدار counter با آن چک می شود عدد ثابت 10 را گذاشتید . مشکل اینجاست که اگر شما جای عدد 10 یک متغیر قرار دهید و آن را در داخل حلقه دستکاری کنید آیا تغییرات در آن اعمال می شود؟؟؟؟

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

NIK
سه شنبه 18 خرداد 1389, 09:01 صبح
توی حلقه فورم مقدار count در حال تعییر هست برای اینکه در هر بار اجرای کد داخل فور متغییر های فور با مقادیر جدید بار گذاری شوند چه کدی لازمه؟
مثال:


for (int i = 0; i < finalmatris.Count; i++)
{
ArrayList Dt = (ArrayList)finalmatris[i];
if (Dt.Count <= 1)
{
finalmatris.RemoveAt(i);
;
}
}




من هم این مشکل رو قبلاً داشتم.
برای حل این مشکل ابتدا در یک حلقه کلیه سطرهایی که باید حذف شوند نشانه گذاری کردم و بعد در در یک حلقه معکوس از آخرین رکورد شروع کردم به پاک کردن سطرهایی که نشانه داشتند.
با این روش قطعا مشکل برطرف میشه.

البته مشکل من کمی با شما فرق داشت. فکر کنم اگه فقط از حلقه معکوس استفاده کنید مشکل برطرف بشه و نیازی به دو حلقه نداشته باشید.


for (int i = finalmatris.Count - 1; i >=0; i--)
{
ArrayList Dt = (ArrayList)finalmatris[i];
if (Dt.Count <= 1)
{
finalmatris.RemoveAt(i);
;
}

mohsensaghafi
چهارشنبه 19 خرداد 1389, 08:41 صبح
صد البته که کار می کنه چون شما حد بالای حلقه را که هر بار مقدار counter با آن چک می شود عدد ثابت 10 را گذاشتید . مشکل اینجاست که اگر شما جای عدد 10 یک متغیر قرار دهید و آن را در داخل حلقه دستکاری کنید آیا تغییرات در آن اعمال می شود؟؟؟؟

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

سلام دوست عزیز.
اگر منظورتون این باشه که نوشتم باز هم داره جواب می ده.

int lim = 10000;
for (int i = 0; i < lim; i++)
{
listBox1.Items.Add(i);
lim /= 10;
}
اگر منظورتون متغیر حلقه باشه باز هم جواب می ده.


for (int i = 0; i < 10; i++)
{
listBox1.Items.Add(i);
i += 2;
}
اگر هم منظورتون چیز دیگه ای هست لطفا توضیح بدید.