PDA

View Full Version : مبتدی: نمایش مقلوب(عکس) اعداد A تا B



mehrdad1991h
چهارشنبه 01 شهریور 1391, 16:06 عصر
سلام
میخواهیم مقلوب اعداد A تا B را نمایش بدیم
حالا من اینجوری مینویسم

int a = Convert.ToInt16(txt1.Text), b = Convert.ToInt16(txt2.Text);
int r = 0;
for (int i = a; i <= b; i++)
{
while (i != 0)
{
r = r * 10 + (i % 10);
i = i / 10;
}
lblshow.Text += r + " , ";
}


الان این کجاش مشکل داره ؟
اون قسمت While که مقلوب عدد را نمایش میدهد
حالا برا این که از A تا B را نشون بدهد یه دستور for هم بهش اضافه کردیم که به عدد همینجور اضافه کنه

الان مشکل کجاست ؟
کد صحیحش چجوری میشه ؟

مقلوب 12 = 21

سپاس

mehdy.programmer
چهارشنبه 01 شهریور 1391, 16:50 عصر
دوست عزیز دقیق متوجه نشدم چیکار کردی ولی به نظر من بهتره که عدد رو بگیری و به رشته تبدیل کنی و اندازه رشته رو بگیری و با ی for برعکسش کنی و تو یه رشته جدید ذخیره کنی! بعد یه for بزرگتر که از a تا b برات انجام بده! حتی فک کنم رشته یه تابع به اسم Reverse داشته باشه که این کارو می کنه!!

موفق باشی!

mehrdad1991h
چهارشنبه 01 شهریور 1391, 17:12 عصر
ببین این تکه کد میاد عدد را مقلوب میکنه دیگه

while (i != 0) {
r = r * 10 + (i % 10);
i = i / 10;
}

حالا میخوام ببینم من اینا چجوری به کار ببرم که کاربر 2 تا عدد وارد کنه از عدد اول تا عدد دوم همه ی اعداد بینش را مقلوب کنه و نمایش بدهد
یعنی مثلا کاربر عدد
102
و 105 را وارد کند و این اعداد را ببینه
201 - 301 - 401 - 501

اوکی ؟

Mahmoud.Afrad
چهارشنبه 01 شهریور 1391, 18:28 عصر
a , b ابتدا و انتهای بازه اند و i هم عدد فعلی هست کلا نباید این سه تا را دستکاری کنید.
r هم ضریب 10 هست که در انتهای حلقه باید صفر بشه برای تکرار بعدی حلقه.
به صورت رشته در نظر بگیری میتونی reverse کنی اما اگر الگوریتم ریاضی شو بخوای باید یه سری تغییر بدی. هر دو روشو میزارم.
int begin = Convert.ToInt32(textBox1.Text),
end = Convert.ToInt32(textBox2.Text);

// By LINQ
Enumerable.Range(begin, end - begin + 1).ToList().ForEach(i =>
{
i.ToString().Reverse().ToList().ForEach(ch => textBox3.Text += ch);
textBox3.Text += ",";
});


/* OR by LOOP
int begin = Convert.ToInt32(textBox1.Text),
end = Convert.ToInt32(textBox2.Text),
r = 0, s = 0;

for (int i = begin; i <= end; i++)
{
s = i;
while (s != 10)
{
r = r * 10 + (s % 10);
s = s / 10;
}
textBox3.Text += r + " , ";
r = 0;
}
*/

mehrdad1991h
چهارشنبه 01 شهریور 1391, 19:32 عصر
بسیار عالی درست شد!
فقط یه سوال چرا
از این

r = r * 10 + (s % 10);
دو بار استفاده کردیم ؟
و چرا شرط وایلمون را بزرگتر از 10 کردیمش ؟

s > 10

سپاس
-------------ادیت----------
فهمیدم چی شد
این یه تیکه را

while (s > 10) {
r = r * 10 + (s % 10);
s = s / 10;
}
r = r * 10 + (s % 10);

اینجوری هم میشه نوشت کم تر و راحت تر ! هر دو یکیه
( البته این قسمت که بعد از وایل اوردین

r = r * 10 + (s % 10);
زیادیه !!! عدد را در 10 ضرب میکنه

while (i != 0) {
r = r * 10 + (i % 10);
i = i / 10;
}


بازم سپاس از پاسختون