Софтуерно Инженерство
Loading...
+ Нов въпрос
SvilenPavlov avatar SvilenPavlov 8 Точки

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

Здравейте!

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

0
Основи на програмирането 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 8 Точки

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

0
TeodorDimitrov89 avatar TeodorDimitrov89 266 Точки

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

http://pastebin.com/PiA3t3M0

0
Perss avatar Perss 7 Точки

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

0
TeodorDimitrov89 avatar TeodorDimitrov89 266 Точки

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

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

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

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

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

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

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

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

Успех

0
Filkolev avatar Filkolev 4428 Точки

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

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

0
SvilenPavlov avatar SvilenPavlov 8 Точки

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

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

Ако искаш да направиш 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 331 Точки

Здравей, знакът "$" се използва за 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