// Out tipidagi ikkita parametrdan foydalanish.
using System;
class Num {
/*X va y o'zgaruvchilar soni qiymatlarining umumiy bo`luvchisi bor yoki yo'qligini aniqlash. Agar mavjud bo'lsa, out tipli parametrlar orqali eng kichik va eng katta bo`luvchilarni qaytarish.*/
public bool HasComFactor(int x, int y,
out int least, out int greatest) {
int i;
int max = x < у ? x : y;
bool first = true;
least = 1;
greatest = 1;
// Eng kichik va eng katta umumiy bo`luvchilarni topish.
for(i=2; i <= max/2 + 1; i++) {
if( ((y%i)==0) & ((x%i)==0) ) {
if(first) {
least = i;
first = false;
}
greatest = i;
}
}
if(least != 1) return true;
else return false;
}
}
class DemoOut {
static void Main() {
Num ob = new Num();
int lcf, gcf;
if(ob.HasComFactor(231, 105, out lcf, out gcf)) {
Console.WriteLine("Наименьший общий множитель " +
"чисел 231 и 105 равен " + lcf);
Console.WriteLine("Наибольший общий множитель " +
"чисел 231 и 105 равен " + gcf);
}
else
Console.WriteLine("Общий множитель у чисел 35 и 49 отсутствует.");
if(ob.HasComFactor(35, 51, out lcf, out gcf)) {
Console.WriteLine("Наименьший общий множитель " +
"чисел 35 и 51 равен " + lcf);
Console.WriteLine("Наибольший общий множитель " +
"чисел 35 и 51 равен " + gcf);
}
else
Console.WriteLine("Общий множитель у чисел 35 и 51 отсутствует.");
}
}
Shuni esda tutingki, HasComFactor() metodi chaqirilishidan oldin lcf va gcf o'zgaruvchilarning qiymatlari Main() metodi tomonidan belgilanadi. Agar HasComFactor() metodi parametrlari out emas, balki ref tipida bo'lsa, bu xatoga olib keladi. Ushbu metod ikki butun sonning umumiy bo`luvchisi mavjudligiga qarab, true yoki false mantiqiy qiymatni qaytaradi. Agar mavjud bo'lsa, out tipidagi parametrlar yordamida ushbu sonlarning eng kichik va eng katta umumiy bo`luvchilari qaytariladi.
Do'stlaringiz bilan baham: |