03. Wine Glass. Всичко изглежда правилно, но judge'a ми дава само 10 точки?
using System;
class Program
{
static void Main()
{
int n = int.Parse(Console.ReadLine());
for (int i = 0, count = 0; i < n / 2; i++)
{
Console.WriteLine("{0}{1}{2}{3}{0}", new string('.', 0 + count), new string('\\', 1), new string('*', (n - 2) - 2 * count), new string('/', 1));
count++;
}
for (int i = 0; i < (n + 1) / 3; i++)
{
Console.WriteLine("{0}{1}{1}{0}", new string('.', (n - 1) / 2), new string('|', 1));
}
for (int i = 0; i < n / 6; i++)
{
Console.WriteLine(new string('-', n));
}
}
}
Това ми е кода.
http://gyazo.com/575c762062c5f98b004ca1a81fc8f8c3 - Условието.
Виж, кои тестове гърмят и използвай техните входове за тест, така лесно ще си намериш проблема.
https://softuni.bg/downloads/svn/csharp-basics/Feb-2014/9.%20CSharp-Basics-Exam-April-2014-Variant-7.zip
Проблема идва от там, че
Не е валидно за 6. Защото 6 / 2 = 3, 3 - 2 = 1. А на нас ни трябва 2.
Отново не си разбрал условието, дръжката на чашата при n по-малко от 12 е n / 2 - 1. Тоест 6 / 2 = 3 и 3 - 1 = 2!.
За n равно на 12 или по-голямо от 12 е n/2 - 2. Тъй като дължината на цялата ти картинка е n, тоест при 12 имаш 12 реда, то последните ти редове с тиренцата са толкова на брой, че да запълнят картинката. Тоест при 12 първата част на картинката ти е n / 2, втората е n / 2 - 2, а за да се допълни картинката остават още два реда за тиренца. Тъй като условието за числа равни на 12 или по-големи е долната половина да е n / 2 - 2, то винаги редовете отдолу с тиренца са 2, а за числа по-малки от 12 е едно, тъй като условието за дръжката на чашата n / 2 - 1.
Поздрави !