12.Draw Fort
Някой може ли да ми помогне?
Получавам само 30/100
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DrawFort
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
string firstRow = "";
string lastRow = "";
string SecondLastRow = "";
string firstRowFirstPart = new string('^', n / 2);
string lastRowFirstPart = new string('_', n / 2);
string firstRowMiddlePart = new string('_', n / 2);
string lastRowMiddlePart = new string(' ', n / 2);
if (n>=3 && n<=4)
{
firstRow = "/" + firstRowFirstPart+ (char)(92)+"/" + firstRowFirstPart+ (char)(92);
lastRow = (char)(92) + lastRowFirstPart + "/"+(char)(92) + lastRowFirstPart + '/';
SecondLastRow = "|" + new string(' ', 2 * n - 2)+"|";
Console.WriteLine(firstRow);
}
else
{
firstRow = "/" + firstRowFirstPart + (char)(92) + firstRowMiddlePart+"/" + firstRowFirstPart + (char)(92);
lastRow = (char)(92) + lastRowFirstPart + "/"+lastRowMiddlePart+ (char)(92) + lastRowFirstPart + "/";
SecondLastRow = "|" + new string(' ', n / 2)+" "+new string('_', n / 2)+ new string(' ', n / 2)+ " |";
Console.WriteLine(firstRow);
}
for (int i = 0; i < n-3; i++)
{
Console.Write("|");
Console.Write(new string(' ', 2 * n - 2));
Console.WriteLine("|");
}
Console.WriteLine(SecondLastRow);
Console.WriteLine(lastRow);
}
}
}
А след като се поворих видях че има подобна тема и трябва да променя дължината на средната част на първич, предпоследния и последния ред на n * 2 - 4 - 2 * (n / 2).
Не бих се сетил......
Трябва да ескейпваш някои специални символи като наклонена черта и кавички с другата наклонена черта(\). Стрингът abc\123 би изглеждал така във Visual Studio: "abc\\123". Също можеш да използваш @ пред стринга(@"abc\123"), за да приема всичко буквално.
Благодаря!
Точно така. Когато търсиш формула за някоя незнайна част и ти е трудно да я откриеш, виж първо това което е известно. Например в случая по условие знаем, че ширината на фигурата е 2 * n колони. Знаем, че кулите - "^" заемат n / 2, също по условие, а от самата рисунка се вижда, че имаме още 4 заети позиции от символите "/" и "\". От това можем да стигнем до заключението, че областта, която ни интересува (бройката "_" в средата) ще бъде равна на - 2 * n - 4 - 2 * (n / 2). Аз лично така правя. Първо преглеждам 100% известното и търся начин чрез него да намеря нещо, което ми трябва. А както колегата е споменал символът ' \ ' не ти го изкарва, защото когато е единичен има малко по особена употреба, обяснена добре в книгата. В случая просто трябва да го въведе така - "\\". Ето и моето решение, ако те интересува http://pastebin.com/5NBz3tyB
Да, Благодаря ти! Четох и коментарите по форумите и ми стана ясна логиката!