PDA

View Full Version : سوال: در این برنامه(مضارب یک عدد) چطوری چند خط دستور رو فقط یکبار اجرا کنم؟



davood59
شنبه 21 اردیبهشت 1392, 18:24 عصر
سلام دوستان عزیز؛
به این برنامه نگاه کنید:

using System;
class MyClass
{
static void Main()
{
process ob = new process();
ob.getnum("please enter your number");
ob.calc();
}
}
class process
{
public int i;

public int getnum(string msg)
{
Console.WriteLine(msg);
i = int.Parse(Console.ReadLine());
return i;
}

public void calc()
{
for (int j = 1; j <= i; j++)
{
if (j == 1)
{
Console.WriteLine(j);
continue;
}
Console.WriteLine(j * i);
}
}
}

این برنامه مضارب یک عدد رو تا یه مقداری که فعلا حد بالاش مهم نیست؛ نشون میده. خب طبعاً 1 باید در مضارب همه اعداد وجود داشته باشه دیگه(اگه درست بگم).
اومدم و برای اینکه 1 رو جزء هر مضربی از عدد مورد نظر نشون بده این چند خط کد رو اضافه کردم:

if (j == 1)
{
Console.WriteLine(j);
continue;
}


البته میشد به نحوی در همون ابتدا یک رو چاپ کرد؛ ولی خب کدها جالب نمیشدن.
حالا بعد از اینکه از این حلقه میاد بیرون دیگه خود عدد رو نشون نمیده و میره سراغ عدد بعدی؛ یعنی شما اگه 3 رو وارد کنید باید 1و3و6 رو نشون بده در حالیکه بعد از اینکه تکه کد فوق رو اضافه کردم دیگه سه رو نشون نمیده.
حالا چیکار کنم که 3 یا خود همون عددی رو که در یک ضرب میشه هم نشون داده بشه.

Mahmoud.Afrad
شنبه 21 اردیبهشت 1392, 18:44 عصر
اگر i عددی هست که مضاربش باید محاسبه بشه پس j هم ضریب هست. در اینصورت باید i*j چاپ بشه.(عدد ضرب در ضریب).

public void calc()
{
for (int j = 1; j <= 10; j++)
{
Console.WriteLine(i * j);
}
}


اگر هم میخوای شرط بزاری باید i رو نمایش بدی نه j:

public void calc()
{
for (int j = 1; j <= 10; j++)
{
if (j == 1)
{
Console.WriteLine(i);
}
Console.WriteLine(i * j);
}
}
البته این شرطی که گذاشتی اصلا منطقی نیست چون اگر بدون شرط بنویسی ، یک بار عدد i در 1 ضرب میشه. یعنی 1 دستور برای اولین مضرب.
اگر با شرط بنویسی ، شرط به ازای تعداد تکرار حلقه بررسی خواهد شد یعنی اگر حلقه 10 بار اجرا بشه 10 (9 دستور بیشتر از حالت قبل) بار شرط بررسی میشه . یعنی 10 دستور برای اولین مضرب که از لحاظ پردازشی به صرفه نیست.

davood59
شنبه 21 اردیبهشت 1392, 18:55 عصر
ممنون محمود آقا ؛

اگر i عددی هست که مضاربش باید محاسبه بشه پس j هم ضریب هست. در اینصورت باید i*j چاپ بشه.(عدد ضرب در ضریب).
خب منم همینطوری نوشتم دیگه؛ مگه جور دیگه ای نوشتم؟
یا در این قسمت:

اگر هم میخوای شرط بزاری باید i رو نمایش بدی نه j:
مگه عدد یک نباید برای هر عددی نمایش داده بشه؟ با کد شما عدد یک نشون داده نمیشه که!

Mahmoud.Afrad
شنبه 21 اردیبهشت 1392, 19:19 عصر
مگه عدد یک نباید برای هر عددی نمایش داده بشه؟ با کد شما عدد یک نشون داده نمیشه که!
نه ، اگر مضارب رو میخوای باید بگم کوچکترین مضرب یک عدد خود همون عدد هست.

مضرب رو با مقسوم علیه قاطی نکن.

davood59
شنبه 21 اردیبهشت 1392, 19:23 عصر
ممنونم؛ آره قاطی کرده بودم.ببخشید.