Выравнивание текста по ширине добавлением пробелов - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Пишу программу выравнивания текста по ширине(нужная длинна строки вводиться с клавиатуры), добавлением дополнительных пробелов в строки. в принципе программа готова и работает но есть одно но... программа выравнивает текст распределяя пробелы пропорционально количеству уже имеющихся пробелов(не хватающее количество символов, до введённой длинны, делиться на общее число пробелов и округляется) Из-за округления строки получаются вся равно разной длинны. Исправил это добавление switch который 1-5 (не знаю возможно ли в такой формуле получить больше не хватающих пробелов) символов распределяет пробелы по строке в начале и в конце, но хотелось бы программу сделать более универсальной. Помогите с алгоритмом расстановки пробелов в строке, чтоб все строки были одинаковой длинны. вот мой код выравнивая
Листинг программы
  1. for (int i = 0; i < allText.Length; i++)
  2. {
  3. Keff = (Shirina - allText[i].Length) / (allText[i].Length - allText[i].Replace(" ", "").Length);
  4. Keff = Math.Round(Keff);
  5. StringBuilder newString = new StringBuilder();
  6. foreach (char j in allText[i])
  7. {
  8. if (j == ' ')
  9. newString.Append(' ', ((int)Keff) + 1);
  10. else
  11. newString.Append(j);
  12. }
  13. allText[i] = newString.ToString();
  14. Ost = Shirina - allText[i].Length;
  15. switch (Ost)
  16. {
  17. case 1:
  18. allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  19. break;
  20. case 2:
  21. allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  22. allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " ");
  23. break;
  24. case 3:
  25. allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  26. allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " ");
  27. break;
  28. case 4:
  29. allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  30. allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " ");
  31. break;
  32. case 5:
  33. allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  34. allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " ");
  35. break;
  36. }
  37. }

Решение задачи: «Выравнивание текста по ширине добавлением пробелов»

textual
Листинг программы
  1. Ost = Shirina - allText[i].Length;
  2.  
  3. if (Ost = 1)
  4.  
  5.     allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  6.  
  7. else
  8.  
  9.     if (Ost % 2 = 0)
  10.  
  11.             for( int p = 2; i <= Ost; p = p + 2)
  12.             {
  13.                 allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  14.                 allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " ");
  15.             }
  16. else
  17.        
  18.     for(int q = 1; q <= Ost; q++)
  19.         {
  20.             if (q % 2 != 0)
  21.  
  22.                 allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " ");
  23.             else
  24.  
  25.                 allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " ");
  26.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы