Programming Basic Exam - 17 July 2016 - Задача 05.Diamond
Здравейте! Може ли малко помощ за 5-та задача от изпита? Конзолата ми принтира само до Console.WriteLine(new string('*', w)); включително, но долната част на фигурата не. Ето и кода:
using System;
class Program
{
static void Main()
{
int n = int.Parse(Console.ReadLine());
var h = (3 * n) + 2;
var w = 5 * n;
Console.WriteLine("{0}{1}{0}", new string('.', n), new string('*', 3 * n));
for (var i = 2; i <= n; i++)
{
var middleDots = (w - (2 * ((n - i) + 1))) - 2;
Console.WriteLine("{0}*{1}*{0}", new string('.', ((n - i) + 1)), new string('.', middleDots));
}
Console.WriteLine(new string('*', w));
for (var i = n - 2; i > n; i--)
{
var middleDots = (w - (2 * ((n - i) + 1))) - 2;
Console.WriteLine("{0}*{1}*{0}", new string('.', ((n - i) + 1)), new string('.', middleDots));
}
}
}
Благодаря! Не го бях съобразила и го поправих със следното: for (var i = n + 1; i > (h - (n + 1)); i++), но пак не ми се получава. Явно или трябва да помисля още малко, или имам и друга грешка в кода.
Ето, как трябва да ти е долната част от задачата. Тествах я в judge и дава 100 т.
Console.WriteLine(new string('*', w));
int outerDots = 1;
int innerDots = w - 4;
for (int i = 0; i < h - (n + 2); i++)
{
Console.WriteLine("{0}*{1}*{0}", new String('.', outerDots), new String('.', innerDots));
outerDots++;
innerDots -=2;
}
Console.WriteLine("{0}*{1}*{0}", new String('.', outerDots), new String('*', innerDots));
п.с. Това ми бяха любимите задачки! Поздрави.
Благодаря за помощта. На този тип задачки винаги се затруднявам. Тази, например, я решавам вече втори ден. :D