Practical Tasks

Здравейте,
в частта Practical Tasks имам проблем и не мога да разбера какъв е.

Първо изпратих Hello You задачата и понеже не бях направила проверки за данните, получих 20 т. Затова реших да си оправя кода и да я изпратя пак, но все ми дава или Wrong Answer или Incorrect return. На Visual Studio всичко ми върви ок и правилно си извършва проверките.
Сега изпратих и задачата Rectangle Area - абсолютно същия проблем.

Ето и кодовете за двете задачи:
using System;

namespace TypesAndVariables
{
class Program
{
static void Main()
{
Console.WriteLine(“What is your name?”);
string name = Console.ReadLine();
string nameTrimed = name.Trim();
int length = nameTrimed.Length;

        do
        {
            Console.WriteLine($"Please, write your name.");
            name = Console.ReadLine();
            nameTrimed = name.Trim();
            length = nameTrimed.Length;
        }
        while (String.IsNullOrEmpty(name) || length == 0);

        Console.WriteLine($"Hello, {nameTrimed}!");
    }
}

}


using System;
using System.Linq;

namespace RectangleArea
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“On the first line write the width of a rectangle, \n” +
“on the second line - the height:”);
string width = Console.ReadLine();
string height = Console.ReadLine();

        if (width.All(char.IsDigit) && height.All(char.IsDigit) 
            && !String.IsNullOrEmpty(width) && !String.IsNullOrEmpty(height))
        {
            //int area = int.Parse(width) * int.Parse(height);
            int widthInt = int.Parse(width);
            int heightInt = int.Parse(height);

            if (widthInt == 0 || heightInt == 0)
            {
                Console.WriteLine("You must write positive integers for width and height.");
                return;
            }

            int area = widthInt * heightInt;
            Console.WriteLine($"The area of the rectangle is: {area}");
        }
        else
            Console.WriteLine("You must write positive integers for width and height.");
    }
}

}

Къде според вас е проблема?

Здравей, а какво е условието на задачите?

Ирко-Бирко,

Разгледах първа.
Направил/a си нещо много по-сложно от това, което ти се изисква по условие.
Това е моето решение:

Никъде не се казва, че трябва да приемеш безкраен брой input-и - програмата ти приема 1 път име и връща поздрав.

Ирко-Бирко, позволи ми още 1-2 коментара:

  1. Поздравления за това, че познаваш цикли (do-while) и валидираш string-a с метода IsNullOrEmpty().
  2. Но в Judge задачите е много важно да четеш внимателно условието и да правиш точно това, което ти е дадено в него - понеже предварително са въведени примерни Input-и и очаквани Output-и и всяка различна буква, space-че и т.н. дават грешка.
    Затова тези иначе полезни за user-a “What is your name?” и “Please, write your name.” не са това, което Judge очаква.
  3. Когато декларираш променлива, а никъде не я използваш - VisualStudio-то ти я подчертава в сиво. Judge може да даде съобщение при компилация за такава променлива - няма да “изгърми”, ама ще се кара. Моят съвет е да си зачистваш променливите, които си деклалирал, а никъде не си използвал в завършеното си решение.
2 Likes

След като разгледах втората - RectangleArea, мога да кажа същото като @petar0 - Излишно усложняване на решението.
Аз обаче не искам да ти давам готово решение, а и виждам, че се справяш а и вече ползваш Linq…
В условието на задачата имаш даден Constraints - че инпута винаги ще е инт число.
Другото което забелязвам е, че опитваш да “говориш” с джъдж, така както би искала да “говориш” с потребител ако когато имаш реална програма.
Това е грешен подход в случая, тъй като системата НЕ Е пригодена да получава напътствия - премахни всички излишни съобщения които принтираш и остави ЕДИНСТВЕНО - отговорът.

3 Likes

petar0, marin.i.dimitrov
Благодаря ви много за отговорите! Доста по- късно си дадох сметка как точно да разчитам и използвам constraint-ите. Благодаря ви за съветите - много са ми полезни!