Lyamda ifodalar oid topshiriq


Bu yerda qo’llanilgan lambda expressions esa



Download 146,3 Kb.
bet2/2
Sana13.06.2021
Hajmi146,3 Kb.
#66222
1   2
Bog'liq
LYAMDA IFODALAR OID TOPSHIRIQ

Bu yerda qo’llanilgan lambda expressions esa:

Func sums = k => k.ToString().Sum(c => c - '0');

Eng muhimi shundaki bunda avvalgi delegate qo’llaganimizdan farqli ravishda hech qanday sikl ishlatmadik.Kod juda ham qisqa ideal ko’rinishga keldi.Buni lambda expressions bilan osongina bajarish mumkon ekan har qanday dasturda ham.



Dastur natijasidan namuna:



2.EKUB(n,m) va EKUK (n,m)

Nazariy qism: EKUB(n,m) ni toppish uchun maxsus Yevklid algoritmi bor.Unga ko’ra kata sonni kichigiga bo;lib qoldiqg’ini yuklab bu jarayonni qoldiq nol bo’lguncha davom ettiramiz chunki bunda ikkalas

i tenglashib qoladi va bunda birinchi yetib kelgan natijamiz bunday qoldiqlar ichida eng kattasi(ya’ni qoldiq olib nolga erishish uchun yetib kelgan birinchi sondir) .Ta’rifga binoan bu esa eng katta umumiy bo’luvchi(greatest common divisor)dir.

EKUB(n,m) va EKUK (n,m) orasidagi quyidagi bog’lanishdan esa EKUK(n,m) ni topamiz.



Dastur kodi quyidagicha:



using System;

namespace GCD_and_LCM_with_lambda

{

class Program

{

private delegate int GCD(int n, int m);

static void Main(string[] args)

{

BeginProgram();
}
private static void BeginProgram()

{

Console.Write("Enter the number n= ");

int n = int.Parse(Console.ReadLine());

Console.Write("Enter the number m= ");

int m = int.Parse(Console.ReadLine());
Console.WriteLine("Greatest common divisor or EKUB(n,m) is equal to= " + EKUB(n, m));

Console.WriteLine("Smallest common divisibility or EKUK(n,m) is equal to= " + n * m / (EKUB(n, m)));

Console.ReadKey();

}

static int EKUB(int n,int m)

{

GCD gcd = (a, b) =>

{

if (b == 0) return a;

else return EKUB(b, a % m);

};

return gcd(n, m);

}

}

}

Dastur natijasidan namuna:



Izoh: Bu dasturda bitta lambda ifoda va operatorni qo’llash orqali natijaga erishdik.



GCD gcd = (a, b) =>

{

if (b == 0) return a;

else return EKUB(b, a % m);

};

Va shuni ham e’tiborga olish kerakki bu lambda operatorni qo’llashda rekursiv metoddan foydalandik.Bu kompilyator time limitini yanada kamaytiradi.Ayniqsa competitive programmingda bu katta ahamiyatga ega sanaladi.



2-usul

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;
namespace _2_usulda_GCD_va_LCM

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("a va b sonlarini kiriting,Ular o'zaro probel bilan ajralaib tursin");

var nums=Array.ConvertAll(Console.ReadLine().Split(),int.Parse);

int a = nums[0], b = nums[1];

Funcgcd=GCD;

Console.WriteLine("EKUB="+gcd(a,b));

Console.WriteLine("EKUK="+(a*b)/gcd(a,b));

Console.ReadKey();
}

static int GCD(int a,int b)

{

return (b == 0) ? a : GCD(b, a % b);

}

}

}

Funcgcd=GCD; qiziq tomoni bunda uchta parametrli Funcdan foydalanilmoqda.

Dastur natijasidan namuna:



3. S satr va butun k soni berilgan:



a) S satrda k soni bor yoki yo’qligini aniqlang

Nazariy qism: Biz bittagina metod va bittadan lambda ifoda va operator yordamida bu masalani ham “full” qilamiz.Ya’ni satrdagi sism satr borligini tekshiruvchi metod yordamida(bu Contains()dir)

Dastur kodi quyidagicha:

using System;

namespace String_with_lambda

{

internal class Program

{

internal delegate bool IsExists(String S, int k);

static void Main(string[] args)

{

String str = Console.ReadLine();

int k = int.Parse(Console.ReadLine());

IsExists isExists = (s, t) =>

{

if (s.Contains(t.ToString())) return true;

else return false;



};

if (isExists(str, k)) Console.WriteLine("k is exists in string str");

else Console.WriteLine("k isn't exists in string str");

Console.ReadKey();

}

}

}

Dastur natijasidan namuna:



Izoh: Biz dasturlash asoslari fanida String tipi va uning metodlari bilan yaqindan tanishib o’tgan edik.Uning Contains() metodi berilgan satrda kiritilgan qism satrning(u belgi(char), raqam(int), va boshqalar bo’lishi mumkin) bor yoki yo’qligini tekshirib mantirqiy(boolean) turdagi qiymat qaytarar edi.Yuqoridagi dasturda lambda operator ichida xuddi shu metoddan foydalandik.Shuni e’tiborga olish kerakki,bunda ishlatilgan lambda ifoda ikkita parametrli bo’lgani uchun uni qavs ichiga vergul bilan ajratilgan holda yoziladi.



IsExists isExists = (s, t) =>

b)S satrda k soni mavjud bo’lsa, shu son satrdan o’chirilsin.

Nazariy qism: Bu masala mantiqiy jihatdan avvalgi masalaning davomidir. Masalani nozik tomoni shundaki shart to’liq bayon etilmayapti.Misol uchun k qism satr (hozirgi masalada u bitta sonni ifodalaydi) satrda bir nech marta qo’llanilsa, uni hammasini o’chirish kerakmi yoki birinchi uchraganinimi.Biz ikkala holat uchun ham ishlab qo’yaveramiz.Dastlab birinchi holat uchun,hammasini o’chiramiz:

Dastur kodi quyidagicha:

using System;

namespace String_with_lambda

{

internal class Program

{

internal delegate bool IsExists(String S, int k);

static void Main(string[] args)

{

String str = Console.ReadLine(); string checker = str;

int k = int.Parse(Console.ReadLine());

IsExists isExists = (s, t) =>

{

if (s.Contains(t.ToString())) return true;

else return false;

};

for (int i = 0; isExists(str,k)==true; i++)

{

int index = str.IndexOf(k.ToString());

str = str.Remove(index, k.ToString().Length);

}

if (!String.Equals(checker, str)) { Console.WriteLine("k si exists in str and delete it here "+str); }

else Console.WriteLine("k isn't exists in str ,so we print to black screen str again" +str);

Console.ReadKey();

}

}

}

Izoh:Bu yerda qo’llanilga lambda ifoda va operator



IsExists isExists = (s, t) =>

{

if (s.Contains(t.ToString())) return true;

else return false;

};

Va sikl orqali mavjud qism satrlarning hammasini o’chirmoqda



Dastur natijasidan namuna:

Ikkinchi holatda esa: Bir nechta k sonli qism satr qatnashgan bo’lganda ham, uning birinchi uchraganini o’chirib tahrirlangan satrni chop etish:

Dastur kodi quyidagicha:

using System;

namespace String_with_lambda

{

internal class Program

{

internal delegate bool IsExists(String S, int k);

static void Main(string[] args)

{

String str = Console.ReadLine(); string checker = str;

int k = int.Parse(Console.ReadLine());

IsExists isExists = (s, t) =>

{

if (s.Contains(t.ToString())) return true;

else return false;

};

if (isExists(str, k))

{

int index = str.IndexOf(k.ToString());

str = str.Remove(index, k.ToString().Length);

}





if (!String.Equals(checker, str)) { Console.WriteLine("k si exists in str and delete it here " + str); }

else Console.WriteLine("k isn't exists in str ,so we print to black screen str again" + str);

Console.ReadKey();

}

}

}

Izoh : Izohni xuddi avvalgi masaladagidek bayon etish mumkin,faqrqli jihati bu kodda sikl ishtirok etmaydi,shunchaki mavjuda bo’lgan qism satrning birinchisini o’chirib yuboradi.



Dastur natijasidan namuna:



Asadullo Akramov Ilhomjon o’g’li

Farg’ona 25.05.2020
Download 146,3 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish