Mətn prosessoru#9596

Mətn prosessoru (Həll təhlili)

Giriş sözləri ardıcıl olaraq, daxil olma sırasına uyğun şəkildə emal olunur. Növbəti söz, ona qədər olan sözlərin ümumi uzunluğu (əlavə olunan söz də daxil olmaqla) -dan artıq olmadıqda cari sətrə əlavə edilir. Əks halda cari sətr tamamlanır və söz yeni sətirdən çıxarılır.

Alqoritmin reallaşdırılması

Giriş sözlərini massivinə oxuyuruq.

char s[100];

Giriş məlumatlarını oxuyuruq.

scanf("%d %d", &n, &k);

dəyişəni çıxarılan sətrin cari uzunluğunu saxlayır.

ptr = 0;

Ardıcıl olaraq söz oxuyuruq.

while (n--)
{

Növbəti sözünü oxuyuruq və onun uzunluğunu tapırıq.

  scanf("%s", s);
  len = strlen(s);

Əgər ptr + len \le k olarsa, onda sözü cari sətirdə çıxarıla bilər. Çıxarılan sətrin uzunluğu simvolu keçməyəcək.

  if (ptr + len <= k)
  {
    ptr += len;
    printf("%s ", s);
  }

Əks halda sözü yeni sətirdən çıxarılmalıdır. Yeni sətrin uzunluğunu -ə bərabər qəbul edirik.

  else
  {
    ptr = len;
    printf("\n%s ", s);
  }
}

Alqoritmin reallaşdırılması – string

Giriş məlumatlarını oxuyuruq.

cin >> n >> k;

dəyişəni çıxarılan sətrin cari uzunluğunu saxlayır.

ptr = 0;

Ardıcıl olaraq söz oxuyuruq.

while (n--)
{

Növbəti sözünü oxuyuruq və onun uzunluğunu tapırıq.

  cin >> s;
  len = s.size();

Əgər ptr + len \le k olarsa, onda sözü cari sətirdə çıxarıla bilər. Çıxarılan sətrin uzunluğu simvolu keçməyəcək.

  if (ptr + len <= k)
  {
    ptr += len;
    cout << s << " ";
  }

Əks halda sözü yeni sətirdən çıxarılmalıdır. Yeni sətrin uzunluğunu -ə bərabər qəbul edirik.

  else
  {
    ptr = len;
    cout << endl << s << " ";
  }
}

Python reallaşdırılması

Giriş məlumatlarını oxuyuruq.

n, k = map(int, input().split())
s = input().split()

dəyişəni çıxarılan sətrin cari uzunluğunu saxlayır.

ptr = 0

siyahısındakı sözlərini sıra ilə baxırıq.

for w in s:

sözünün uzunluğunu hesablayırıq.

  lw = len(w)

Əgər ptr + lw \le k olarsa, onda sözü cari sətirdə çıxarıla bilər. Çıxarılan sətrin uzunluğu simvolu keçməyəcək.

  if ptr + lw <= k:
    ptr += lw
    print(w, end=" ")

Əks halda sözü yeni sətirdən çıxarılmalıdır. Yeni sətrin uzunluğunu -ə bərabər qəbul edirik.

  else:
    ptr = lw
    print()
    print(w, end=" ")