Выравнивание текста по ширине добавлением пробелов - 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(" "), " ");
}