Выравнивание текста по ширине добавлением пробелов - C#
Формулировка задачи:
Всем привет!
Пишу программу выравнивания текста по ширине(нужная длинна строки вводиться с клавиатуры), добавлением дополнительных пробелов в строки.
в принципе программа готова и работает но есть одно но...
программа выравнивает текст распределяя пробелы пропорционально количеству уже имеющихся пробелов(не хватающее количество символов, до введённой длинны, делиться на общее число пробелов и округляется)
Из-за округления строки получаются вся равно разной длинны.
Исправил это добавление switch который 1-5 (не знаю возможно ли в такой формуле получить больше не хватающих пробелов) символов распределяет пробелы по строке в начале и в конце, но хотелось бы программу сделать более универсальной.
Помогите с алгоритмом расстановки пробелов в строке, чтоб все строки были одинаковой длинны.
вот мой код выравнивая
for (int i = 0; i < allText.Length; i++) { Keff = (Shirina - allText[i].Length) / (allText[i].Length - allText[i].Replace(" ", "").Length); Keff = Math.Round(Keff); StringBuilder newString = new StringBuilder(); foreach (char j in allText[i]) { if (j == ' ') newString.Append(' ', ((int)Keff) + 1); else newString.Append(j); } allText[i] = newString.ToString(); Ost = Shirina - allText[i].Length; switch (Ost) { case 1: allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); break; case 2: allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " "); break; case 3: allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " "); break; case 4: allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " "); break; case 5: allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " "); break; } }
Решение задачи: «Выравнивание текста по ширине добавлением пробелов»
textual
Листинг программы
Ost = Shirina - allText[i].Length; if (Ost = 1) allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); else if (Ost % 2 = 0) for( int p = 2; i <= Ost; p = p + 2) { allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " "); } else for(int q = 1; q <= Ost; q++) { if (q % 2 != 0) allText[i] = allText[i].Insert(allText[i].IndexOf(" "), " "); else allText[i] = allText[i].Insert(allText[i].LastIndexOf(" "), " "); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д