Loading...
denidev avatar denidev -1 Точки

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 - Условието.

Тагове:
0
Programming Basics 15/07/2015 20:54:30
denidev avatar denidev -1 Точки

Окей, до колкото разбрах съм имал две грешки.

1. Грешка при пресмятането за стълбацата на чашата. - Fixed.

2. Грешка при принтирането на най-долните редове - ако n < 12, да принтира ЕДИН ред, иначе да принтира ДВА реда. - Fixed.

Успях да си го направя по мой си начин и стигнах до 80 точки. Някъде се губят още 20.

Ето и новия код :

using System;

class Program
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());

        for (int i = 0, count = 0; i &lt; 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 &lt; (n /2) -2 ; i++)
        {
            Console.WriteLine("{0}{1}{1}{0}", new string('.', (n - 1) / 2), new string('|', 1));
        }

        if (n &lt; 12)
        {
             Console.WriteLine(new string('-', n));
        }
        else if (n == 12)
        {
            for (int i = 0; i &lt; n / n + 1; i++)
            {
                Console.WriteLine(new string('-', n));
            }
        }
        else
        {
            for (int i = 0; i &lt; n / n + 1; i++)
            {
                Console.WriteLine(new string('-', n));
            }
        }
    }
}

 

 

0
denidev avatar denidev -1 Точки

Проблема идва от там, че

for (int i = 0; i &lt; (n /2) -2 ; i++)

Не е валидно за 6. Защото 6 / 2 = 3, 3 - 2 = 1. А на нас ни трябва 2.

0
Simooo93 avatar Simooo93 81 Точки

Отново не си разбрал условието, дръжката на чашата при 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.

Поздрави ! 

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