Выравнивание текста по ширине добавлением пробелов - 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(" "), " ");
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д