[C#] Домашно Strings and Text Processing - 6 задача


3

Условие: Write a program that reads from the console a string of maximum 20 characters. If the length of the string is less than 20, the rest of the characters should be filled with '*'. Print the result string into the console.

Решениеsource.

Обяснение: Използваме PadRight() за да добавим липсващите символи.




Отговори



0

Ето го и моето решение също с PadRight:

 

class PadRight
{
    static void Main(string[] args)
    {
        string text = Console.ReadLine();
        Console.WriteLine(text.PadRight(20,'*'));
    }
}

от Plamen.Minkov (216 точки)


0

Console.WriteLine(input.Length >= 20 ? input.Substring(020) :
input + new string('*'20 input.Length));


от Anubis_Black (1521 точки)


0

След 1 минути заигравка, едно решение, ала jassson. :)) no hard feelings bro. Просто винаги си шампион по краткост ;)

 

static void Main()
    {
        Console.WriteLine(Console.ReadLine().PadRight(20, '*'));
    }

от Cheesus (272 точки)


0
След още 2 мин :Рр static void Main() { Console.WriteLine(Console.ReadLine().PadRight(20, '*').Substring(0, 20)); }
П.П. Това е само за fun-a, определено не е код за предаване :Рр

от Cheesus (272 точки)


0
Колеги, аз съм решил задачата със един char масив, в който копирам оригиналния стринг и допълвам със звездички в един цикъл.
Не смятате ли, че PadRight() е малко бавен, тъй като ще имате максимум 19 нови копия на стринга, или минимум 1.
Също така видях и решения, които просто добавят 20 * което е доста в страни от задачата, там пише да се допълни.
Решението със Стрим билдър също не е оптимално защото имаме зададена дължина, защо тогава използваме масив с автоматично генериране за презапас дължина?
Моля споделете мнение.

от Sasho (89 точки)


0
Ами аз си декларирам StringBuilder с предварително определен капацитет. Иначе ако правилно съм разбрал от лекциите той се декларира по дефоут с 16 знака(или бита незнам) и като не стигнат се увеличава по 2 което значи 32 с което няма повече генериране на капацитети. А и както трейнърете казаха за 20 символа няма значение бързината :) да бяха 100 000 ...

от kanchev_k (319 точки)


0
Винаги, когато става прекалено лесно, се притеснявам, че греша или не съм разбрала условието.
Това е моето решение, ако някой види нещо нередно моля да ми каже.
http://pastebin.com/4tFyrhpz



0

В моето решение реших да огранича потребителя да не може да въведе повече от максималния брой символи в случая 20. Тъй като при толкова много символи може да се обърка и без да иска да повтори някой smiley

Най отгоре съм декларирал "int" променлива за да може в бъдеще лесно да се променя дължината на стринга. След което декларирам StringBuilder с капацитет максималната дължина на стринга (за да не се налага допълнително разширяване на капацитета).

While цикъла върти докато юзера не въведе по малко от максимума символи. И накрая един for от str.Length до края добавя звездички чрез билдера

http://pastebin.com/eD32DcWM


от kanchev_k (319 точки)


0

Решение: source

Зацикляме и четем стринг от конзолата докато не надвишава 20 символа. Ако е по-малко с цикъл го допълваме с звездички.


от stanchev (197 точки)


0
http://pastebin.com/F6yLm2HT - използва се PadLeft или PadRight.

от agentzero (0 точки)


1

Решение

Ако въведената дума е по-малка от 20, то правя един цикъл for от text.Length до 20 и добавям ' * '.


от teleriknetwork (2734 точки)


0
Сигурен ли си, че не е то 19 защото цикъла ти е < 20. И другото += е в пъти по бавен от .Append на StringBuilder-а.

от IceElementor (398 точки)

0
Колега цикълът ми е до < 20 (или <= 19), защото ми трябват 20 елемента, а индексите започват от 0. За += си прав, че е по-бавно от StringBuilder, но в случая имам максимум 20 операции, в които трябва да добавям и += е бързо.

от teleriknetwork (2734 точки)


0

Решение

Обяснение: Проверявам дали въведения от user-a стринг е с дължина 20 символа. Ако стринга с по-малка дължина, тогава чрез метода PadRight() запълвам дължината му с ‘*’, докато дължината стане 20 съмвола.


от cchapo (583 точки)