C # তে পূর্ণসংখ্যার সংখ্যার জন্য আমি বিভাগ এবং মডুলো কীভাবে গণনা করতে পারি?
উত্তর:
এই জাতীয় প্রশ্ন জিজ্ঞাসা করার আগে, দয়া করে এমএসডিএন ডকুমেন্টেশন পরীক্ষা করুন ।
আপনি যখন দুটি পূর্ণসংখ্যা ভাগ করেন, ফলাফল সর্বদা পূর্ণসংখ্যার হয়। উদাহরণস্বরূপ, 7/3 এর ফলাফল 2 7/3 এর অবশিষ্টটি নির্ধারণ করতে, অবশিষ্ট অপারেটর ( % ) ব্যবহার করুন ।
int a = 5;
int b = 3;
int div = a / b; //quotient is 1
int mod = a % b; //remainder is 2
a
এবং b
আপনি যদি সেগুলি ব্যবহার না করে থাকেন? : ডি
এছাড়াও আছে Math.DivRem
quotient = Math.DivRem(dividend, divisor, out remainder);
Math.DivRem
ক্রিয়ায় ডিভ এবং মোড গণনা করে না। এটি শুধু একটি সাহায্যকারী ফাংশন এবং তার সোর্স কোড ঠিক হল: public static int DivRem(int a, int b, out int result) { result = a%b; return a/b; }
।
div
ও rem
নির্দেশাবলীর চেয়ে অনুকূলকরণের জন্য একটি পদ্ধতি কল সনাক্ত করা সহজ
%
এবং /
অপারেটরদের যদি স্বতন্ত্রভাবে ব্যবহার করা হয়েছে।
মজার ব্যাপার!
'মডুলাস' অপারেশনটি এই হিসাবে সংজ্ঞায়িত করা হয়েছে:
a % n ==> a - (a/n) * n
রেফ: মডুলার গাণিতিক
সুতরাং আপনি নিজের রোল করতে পারেন , যদিও এটি% অপারেটরে অন্তর্নির্মিত তুলনায় আরও কম ধীর হবে:
public static int Mod(int a, int n)
{
return a - (int)((double)a / n) * n;
}
সম্পাদনা: বাহ, ভুলভাবে এখানে ভুলভাবে কথা বলা হয়েছে মূলত, আমাকে ধরার জন্য @ জোরেেনকে ধন্যবাদ
এখন আমি এখানে নির্ভর করছি যে সি # তে বিভাগ + কাস্ট-টু-ইন্ট সমান Math.Floor
(যেমন এটি ভগ্নাংশকে হ্রাস করে), তবে "সত্য" বাস্তবায়ন এর পরিবর্তে এমন কিছু হবে:
public static int Mod(int a, int n)
{
return a - (int)Math.Floor((double)a / n) * n;
}
আসলে, আপনি নিম্নলিখিতগুলির সাথে% এবং "সত্যিকারের মডুলাস" এর মধ্যে পার্থক্যগুলি দেখতে পাচ্ছেন:
var modTest =
from a in Enumerable.Range(-3, 6)
from b in Enumerable.Range(-3, 6)
where b != 0
let op = (a % b)
let mod = Mod(a,b)
let areSame = op == mod
select new
{
A = a,
B = b,
Operator = op,
Mod = mod,
Same = areSame
};
Console.WriteLine("A B A%B Mod(A,B) Equal?");
Console.WriteLine("-----------------------------------");
foreach (var result in modTest)
{
Console.WriteLine(
"{0,-3} | {1,-3} | {2,-5} | {3,-10} | {4,-6}",
result.A,
result.B,
result.Operator,
result.Mod,
result.Same);
}
ফলাফল:
A B A%B Mod(A,B) Equal?
-----------------------------------
-3 | -3 | 0 | 0 | True
-3 | -2 | -1 | -1 | True
-3 | -1 | 0 | 0 | True
-3 | 1 | 0 | 0 | True
-3 | 2 | -1 | 1 | False
-2 | -3 | -2 | -2 | True
-2 | -2 | 0 | 0 | True
-2 | -1 | 0 | 0 | True
-2 | 1 | 0 | 0 | True
-2 | 2 | 0 | 0 | True
-1 | -3 | -1 | -1 | True
-1 | -2 | -1 | -1 | True
-1 | -1 | 0 | 0 | True
-1 | 1 | 0 | 0 | True
-1 | 2 | -1 | 1 | False
0 | -3 | 0 | 0 | True
0 | -2 | 0 | 0 | True
0 | -1 | 0 | 0 | True
0 | 1 | 0 | 0 | True
0 | 2 | 0 | 0 | True
1 | -3 | 1 | -2 | False
1 | -2 | 1 | -1 | False
1 | -1 | 0 | 0 | True
1 | 1 | 0 | 0 | True
1 | 2 | 1 | 1 | True
2 | -3 | 2 | -1 | False
2 | -2 | 0 | 0 | True
2 | -1 | 0 | 0 | True
2 | 1 | 0 | 0 | True
2 | 2 | 0 | 0 | True
Enumerable.Range(0, 10).Select(x => (double)x / 10.0).Select(x => (int)x).ToList().ForEach(x => Console.WriteLine(x));
- সমস্ত 0 এর
Math.Floor(-10.0 / 3.0)
এবং -10 / 3
হয় না একই জিনিস।
/
অপারেটরটি ব্যবহার করে বিভাগ সঞ্চালিত হয় :
result = a / b;
%
অপারেটরটি ব্যবহার করে মডুলো বিভাগ করা হয় :
result = a % b;
ব্যবহারকারীর কাছ থেকে দুটি পূর্ণসংখ্যা পড়ুন। তারপরে বাকী অংশ এবং ভাগফল গণনা / প্রদর্শন করুন,
// When the larger integer is divided by the smaller integer
Console.WriteLine("Enter integer 1 please :");
double a5 = double.Parse(Console.ReadLine());
Console.WriteLine("Enter integer 2 please :");
double b5 = double.Parse(Console.ReadLine());
double div = a5 / b5;
Console.WriteLine(div);
double mod = a5 % b5;
Console.WriteLine(mod);
Console.ReadLine();