PDA

View Full Version : سوال: بدست آوردن مضارب یک عدد خاص در یک بازه



ArshiaMansouri
چهارشنبه 21 مرداد 1394, 23:58 عصر
سلام و درود
همونطور که گفتم در تاپیک های قبلی من تازه C# رو شروع کردم و خیلی تو حل مسائل مشکل دارم !
این مسئله رو به 10 روش دارم تست میکنم نمیشه !
برنامه ای بنویسید که a و b را بخواند ، سپس بررسی کند چند عدد از a تا b بر 6 بخش پذیر است ؟ ( مثلا 3 تا ، 4 تا )

من با این استدلال پیش رفتم که اگر باقی مانده تفریق دو عدد 0 و 1 باشه کلا عددی بینشون نیست . ولی حالا نمیدونم اگر بیشتر از1 باشه قضیه به چه صورت خواهد بود .چجوری میتونم اعداد بین دو عدد رو بگیرم
سورس تا جایی که من پیش رفتم :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace a6
{
class Program
{
static void Main(string[] args)
{
int a, b, c, d;
Console.Write("Do adad vared namaieed : ");
a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
if (a > b)
{
c = a;
d = b;
}
else
{
c = b;
d = a;
}
if (c - d == c)
Console.Write("Sefr");
if (c - d == 1)
Console.Write("Sefr");
if (c - d == 2)
// inja ro moondam !
Console.ReadLine();
}
}
}



خیلی ممنون

ahmadreza.s
پنج شنبه 22 مرداد 1394, 00:31 صبح
سلام

آفرین ، منم تازگیا شروع کردم به برنامه نویسی دات نت ! و واقعن دارم ازش لذت میبرم :قلب:

ببین میتونی استدلالت رو اینجوری کنی که : اگه a از b بزرگتر باشه ؛ یه حلقه از عدد b به عدد a برسه و یه شرط بزاری که اگه عدد بر 6 بخش پذیر باشه یکی به متغیرمون کنه !

کد رو ببین متوجه میشی :

using System;


namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a, b, count = 0;
Console.WriteLine("Enter 2 Number s : ");
a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
if (a > b)
{
for (int i = b; i <= a; i++)
if (i % 6 == 0)
count++;
}
else if (a < b)
{
for (int i = a; i <= b; i++)
if (i % 6 == 0)
count++;
}


Console.WriteLine(count + "");
Console.Read();


}
}
}

rahnema1
پنج شنبه 22 مرداد 1394, 07:57 صبح
سلام
همیشه حلقه راه حل مناسب نیست. مخصوصا مثلا وقتی بخواهیم تعداد حالتهای یک چیز را به دست بیاریم
مثلا اگه اعداد a و b صحیح باشند جواب میشه عبارت زیر
b / 6 - (a - 1) / 6

Saman_12
پنج شنبه 22 مرداد 1394, 12:26 عصر
همونطور که اشاره کردند فرمول های ریاضی تو این مورد کارامد تر از حلقه هستند :

double a =6, b=29.6;
int dividable_count = (int)(Math.Floor(Math.Max(a, b) / 6) - Math.Ceiling(Math.Min(a, b) / 6)) + 1;


Console.WriteLine(dividable_count);