Софтуерно Инженерство
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