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 = 0siyahı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=" ")