بدست آوردن مضارب یک عدد خاص در یک بازه
سلام و درود
همونطور که گفتم در تاپیک های قبلی من تازه 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();
}
}
}
خیلی ممنون
نقل قول: درخواست حل مسئله
سلام
آفرین ، منم تازگیا شروع کردم به برنامه نویسی دات نت ! و واقعن دارم ازش لذت میبرم :قلب:
ببین میتونی استدلالت رو اینجوری کنی که : اگه 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();
}
}
}
نقل قول: درخواست حل مسئله
سلام
همیشه حلقه راه حل مناسب نیست. مخصوصا مثلا وقتی بخواهیم تعداد حالتهای یک چیز را به دست بیاریم
مثلا اگه اعداد a و b صحیح باشند جواب میشه عبارت زیر
b / 6 - (a - 1) / 6
نقل قول: درخواست حل مسئله
همونطور که اشاره کردند فرمول های ریاضی تو این مورد کارامد تر از حلقه هستند :
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);