gcd=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
Do'stlaringiz bilan baham: