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

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


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

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

8   голосов , оценка 3.25 из 5
Похожие ответы