Текстовий процесор#9596

Текстовий процесор (Розбір)

Вхідні слова обробляються послідовно, у порядку їх надходження. Чергове слово додається до поточного рядка, якщо сумарна довжина слів у ньому, включно з тим, що додається, не перевищує . В іншому випадку поточний рядок завершується, і слово виводиться з нового рядка.

Реалізація алгоритму

Вхідні слова читаємо в масив .

char s[100];

Читаємо вхідні дані.

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

Змінна зберігає поточну довжину рядка, що виводиться.

ptr = 0;

Послідовно читаємо слів.

while (n--)
{

Читаємо чергове слово і знаходимо його довжину .

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

Якщо ptr + len \le k, то слово можна вивести в поточному рядку. Довжина рядка, що виводиться, не перевищить символів.

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

Інакше слово слід вивести в новому рядку. Довжину нового рядка покладемо рівною .

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

Реалізація алгоритму – string

Читаємо вхідні дані.

cin >> n >> k;

Змінна зберігає поточну довжину рядка, що виводиться.

ptr = 0;

Послідовно читаємо слів.

while (n--)
{

Читаємо чергове слово і знаходимо його довжину .

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

Якщо ptr + len \le k, то слово можна вивести в поточному рядку. Довжина рядка, що виводиться, не перевищить символів.

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

Інакше слово слід вивести в новому рядку. Довжину нового рядка покладемо рівною .

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

Python реалізація

Читаємо вхідні дані.

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

Змінна зберігає поточну довжину рядка, що виводиться.

ptr = 0

Перебираємо слова у списку .

for w in s:

Обчислюємо довжину слова .

  lw = len(w)

Якщо ptr + lw \le k, то слово можна вивести в поточному рядку. Довжина рядка, що виводиться, не перевищить символів.

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

Інакше слово слід вивести в новому рядку. Довжину нового рядка покладемо рівною .

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