Loading...
VladoGenov avatar VladoGenov 45 Точки

First-Steps-in-Coding-Exercises 8* - Квадрат от звездички (Rectangle Area/Square of Stars in Judge)

Здравейте, колеги! Намирам решение на задача 8* Квадрат от звездички. Работи във Visual studio, но Judge системата не я приема и ми дава само 0-точки.

Правих проверката с безкраен цикъл, без цикъл само с if, но системата не я приема в нито един от случаите. Какъв може да е проблема?

Ето и кода:

        static void Main(string[] args)
        {
            var N=1;
            while (true)
            {
                Console.Write("Enter N (2<=N<=100): ");
                N = int.Parse(Console.ReadLine());
                if (N >= 2 && N <= 100)
                {
                    break;
                }
            }
            for (int i = 1; i <= N; i++)
                {
                    Console.Write("*");
                    for (int j = 2; j <= (N - 1); j++)
                    {
                        if (i == 1 || i == N)
                        {
                            Console.Write("*");
                        }
                        else
                        {
                            Console.Write(" ");
                        }
                    }
                    Console.WriteLine("*");
            }
        }

Също и с вариант без цикъл while за проверка на входа:

static void Main(string[] args)
        {
            Console.Write("Enter N (2<=N<=100): ");
            var N = int.Parse(Console.ReadLine());
            if (N >= 2 && N <= 100)
            {

            ....................

            }

         }

Judge системата не приема нито един от двата ми варианта.

Със сигурност има и други решения, но в условието се казва: "Допишете програмата по-горе, за да отпечатва квадрат, съставен от звездички. Може да се наложи да използвате for-цикли."

Къде би могъл да е проблема, при положение, че кодът е работещ?

Благодаря предварително.

 

2
Programming Basics 01/03/2016 14:47:46
VladoGenov avatar VladoGenov 45 Точки

Открих проблема в Judge:

Странно, но проблема не е заради грешка в кода, а е поради поставянето на пояснителния текст преди въвеждането:

Console.Write("Enter N (2<=N<=100): ");

При премахване на този ред, системата ми даде 100 - точки.

Освен това има някакъв проблем с имената на задачите.

Опитвах се да компилирам задачата в "Rectangle Area" според част от условието в кода "// TODO: print the rectangle", а то се оказа, че тази задача е с име "Square of Stars" (последната) в Judge. smiley

4
H.Stoyanov avatar H.Stoyanov 115 Точки

Така е защото системата чете редове от стрингове и ти печаташ нещо, което не очаква :)

3
MorganFreeFarm avatar MorganFreeFarm 51 Точки

Няма проблем с имената на задачите. Rectangle area e 7-ма задача от упражнението, докато Square of Stars e последната 8 задача със звездичка. Грешката идва от там, че ако погледнеш задачата в judge-а тя е "trim" (виж къде го пише), тоест проверява целия код, докато другите задачи са "Numbers check", тоест проверява само сметките и няма значение дали си написал някакъв допълнителен текст.

  Моето решение за Square of stars е малко по различно:

using System;

class SquareofStars
{
    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        string stars = new string('*', n);
        Console.WriteLine(stars);

        for (int i = 1; i <= n - 2; i++)
        {
            string stars1 = "*" + new string(' ', n - 2) + "*";
            Console.WriteLine(stars1);
        }
        stars = new string('*', n);
        Console.WriteLine(stars);
    }
}

 

Поздрави!

4
VladoGenov avatar VladoGenov 45 Точки

Благодаря ти! Това със "trim" и "Numbers check" не го знаех, а е важно. Беше ми много полезно, че го сподели.

Иначе относно решението със стринг ми мина, но го игнорирах, понеже в условието се казваше да използваме "for-цикли" (в мн.ч.) т.е. повече от един цикъл и затова реших да го направя с 2 цикъла вместо със стринг.

Но ще изпробвам и твоят код, за да тествам time-a как е.

Благодаря ти отново, колега!

3
MorganFreeFarm avatar MorganFreeFarm 51 Точки

Да, може би си прав : )) И аз ще помисля над решение с повече от един цикъл : )) Но, като се замисля ти си използвал оператор &&, който се предполага също да не сме взимали :D

 

2
01/03/2016 01:30:22
VladoGenov avatar VladoGenov 45 Точки

При твоето решение с 1 цикъл и стринг, времето се оказа по-добро :) Time: 0.013 s
Но открих един пропуск спрямо условието - липсва проверката N (2 ≤ N ≤100)
И Judge-а обаче не хваща пропуска smiley

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