Loading...
SvilenPavlov avatar SvilenPavlov 11 Точки

Rhombus of Stars и чертане на фигурки с for

Здравейте!

В курса программинг бейсикс,в 6-ти урок има упражнение да нарисуваме ромб от звездички. В упътването се казва Отпечатайте row-1 пъти “ *” Да де, ама със Console.Write(new string()) не става, защото приема само char, а " *" е стринг, има 2 символа. Как да го направя, не намерих  в гооглиту. Тенкс ин адванс!

0
Programming Basics 14/06/2016 13:28:50
Alex0101 avatar Alex0101 374 Точки

Здравей, 

ако искаш погледни следната тема 

https://softuni.bg/forum/9477/string-vs-new-string#answer-26841

На дълго и широко съм обяснил как се ползват string i new string.

Надявам се да съм бил полезен.

Поздрави,

Успех

0
14/06/2016 13:38:25
SvilenPavlov avatar SvilenPavlov 11 Точки

Може би грешно съм задал въпроса. Всъщност има ли еквивалент на new string за string, който да умножава съдържането на стринг, както new string прави с char?

0
TeodorDimitrov89 avatar TeodorDimitrov89 264 Точки

Не винаги ще може да се ползва само new string понякога се налага комбинация от new string + for-цикъл или в този случай съм го направил с 2 for-цикъла.

http://pastebin.com/PiA3t3M0

0
Perss avatar Perss 7 Точки

Ще поясниш ли кода си ?

0
TeodorDimitrov89 avatar TeodorDimitrov89 264 Точки

Не знам точно кое не е ясно в моето решение,но ще се опитам да обясня .

Първото нещо когато решавах този вид задачи е да намеря някаква връзка между елементите и да разделя фигурата на части.

Първото нещо което се вижда е че ще имаме 2 променливи една за звездите и една са разстоянията тоест (spaces).

Вижда се че при n=3 горната част е точно n-реда затова първият ми най-външният цикъл върти до n.

Следващото нещо което се вижда е че първо трябва да се нарисуват разстоянията и чак след това звездите,затова първият цикъл който се води вложен в основния и ще се изпълно веднага след като се влезе трябва да чертае разстояния до колко ами до n-spaces ,защото ако се загледаш първият ред е равен на n и като извадим едната звезда получаваме точно разстоянията.

След разстоянията трябва да начертаем звездите и затова ползвам още един цикъл който се върти до stars.

Другото нещо което трябва да се направи е да се намалят разстоянията и да се увеличат звездите.

Не знам дали обясних добре,но може да използваш Debbuger и да видиш какво се случва.

Успех

0
Filkolev avatar Filkolev 4482 Точки

Отговорът се състои в заглавието на темата - for loop.

Други варианти има, но са по-сложни, примерно: string.Join(string.Empty, Enumerable.Repeat(" *", row - 1));

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Това още не сме го взели, но предполагам, че е точно отговора на въпроса ми. Явно трябва със вложен фор за ред и колона. Предполагам би трябвало да се промени подксазката в такъв случай.

0
14/06/2016 14:39:44
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Ако искаш да направиш new string(), като използваш повече от 1 символ (в твоя случай "* "), можеш да опиташ следното:

string s = new string('s', n).Replace("s","* ");

По този начин се създава стринг, който съдържа даден символ (в случая съм използвал 's'), а с командата Replace(), той се подменя навсякъде със string-a, който си задал.

Ето и кратко решение на задачата (аз използвам substring и placeholder-и, които най-вероятно още не сте ги учили, но ако провериш в интернет ще разбереш лесно кое какво прави): http://pastebin.com/775qFGi1

В общи линии при моето решение, още в самото начало създавам един дълъг string от "* ", а после с for циклите отпечатвам части от string-а и празни места пред тях.

Ако не разбираш нещо от кода, а ти е интересно как работи - питай и ще обяснявам.

Успех!

1
14/06/2016 15:59:51
Perss avatar Perss 7 Точки

Като рънна кода и ми изписва "Unexpected character '$'" ? Какво е това $ ?

0
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Здравей, знакът "$" се използва за string interpolation. Можеш да разгледаш примери тук: http://www.dotnetperls.com/string-interpolation . Като цяло идеята му е да позволи да се добави стойността на променлива/уравнение/др. в string. Друг вариант е да се използва placeholder от типа на "{0}" или concatenation с "+". Пример:

int a = 5;

Console.WriteLine("The value of a is: {0}", a);
// Резултат: "The value of a is: 5"

Console.WriteLine($"The value of a is: {a}");
// Резултат: "The value of a is: 5"

Console.WriteLine("The value of a is: " + a);
// Резултат: "The value of a is: 5"

Доколкото съм запознат, "$" е добавено в C# 6.0 (Visual Studio 2015+), така че при по-стари версии може да даде грешка.

В Judge работи безпроблемно.

Успех!

0
rumyn avatar rumyn 8 Точки

Вие сте злато ! даже и го разбрах кода на това http://pastebin.com/775qFGi1   :) със излъгването на ню стринг да приеме няколко символа

и s.Substring като си поиграх малко го разбрах и него , май

Благодаря!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.