1-Mavzu 1-Mavzu Reja: Klass a’zolariga ruxsatni boshqarish


k butun soni, bu rekursiyada



Yüklə 233,68 Kb.
səhifə42/96
tarix27.07.2023
ölçüsü233,68 Kb.
#137688
1   ...   38   39   40   41   42   43   44   45   ...   96
1-Mavzu 1-Mavzu Reja Klass a’zolariga ruxsatni boshqarish-fayllar.org

k butun soni, bu rekursiyada s[pos] belgisining takrorlanish sonini aniqlaydi;
c char tipidagi o'zgaruvchi, rekursiv funksiyada oldingi belgini ifodalaydi. Bu ketma-ket topilgan belgilarni maxsus qayta ishlash uchun kerak.
// ratrni qayta ishlash uchun rekursiv funksiya
static string ConvertStr(string s, int pos, char c, int k, string s2)
{
if (pos < s.Length) // s[pos] hozircha s[pos] oxirgi belgi emas
{
if (pos == 0) // satrning birinchi belgisi
// keyingi belgini qayta ishlashga o'tish
return ConvertStr(s, pos + 1, s[pos], 1, s2);
else // не первый символ строки
{
if (s[pos] == c) // agar keyingi va oldingi belgilar bir xil bo'lsa, biz harakat davom ettiramiz
return ConvertStr(s, pos + 1, s[pos], k + 1, s2);
else // agar belgilar har xil bo'lsa, unda s2 satrida vaqtinchalik natijani belgilash
{
// agar k = = 1 bo'lsa, s2 ga c belgisi shunchaki qo`shish,
// aks holda, c belgisidan oldin k raqamini qo'yish
if (k == 1)
s2 = s2 + c.ToString();
else
s2 = s2 + k.ToString() + c.ToString(); // s2 = s2 + "AAA' = s2 + "3A"
// rekursiyaning keyingi qadamiga o'tish, satrni qayta ishlashni davom ettirish
return ConvertStr(s, pos + 1, s[pos], 1, s2);
}
}
}
else // butun satr o`tish
{
// satrni qayta ishlashni tugatish
if (k == 1)
s2 = s2 + c.ToString();
else
s2 = s2 + k.ToString() + c.ToString();

Yüklə 233,68 Kb.

Dostları ilə paylaş:
1   ...   38   39   40   41   42   43   44   45   ...   96




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin