Професионална програма
Loading...
+ Нов въпрос
TonyDimitrov avatar TonyDimitrov 27 Точки

Една стара задчка от OOP Advanced 4.Telephony, където един тест не ми минава?

Реших да порешавам задачки почнах тези от ООП Advanced от последния курс и един тест не ми минава. Преди време съм решавал тази задача и съм взел 100т.. Сега реших валидачията да я направя с regex за разнообразие и от там май идва проблема, а regex-a е на пръв поглед елементарен. Условието: http://pastebin.com/4TggECSA

Това е кода: http://pastebin.com/1PMn5kT4

Задачата не е сложна и ако някой даде съвет ще съм благодарен.

 

 

 

Тагове:
1
C# OOP Advanced
sevdalin avatar sevdalin 38 Точки

И на мен не ми минава един тест. 3-тият... Ти успя ли да си намериш проблема колега? Знам, че е било отдавна но... :)

0
mad_cop avatar mad_cop 6 Точки

И при мен не ми минава един тест

ето кода

https://pastebin.com/idDctdeY

Моля за съвет!

0
bMedarski avatar bMedarski 148 Точки

mad_cop проблема ти е в регекса за Browse  смени на това и минава - if (Regex.IsMatch(site, @"\d+"))

0
Tangrila avatar Tangrila 21 Точки

регекс за номера ^\\d+$ и за уеб \\d

0
AlucardDracula avatar AlucardDracula 416 Точки

аз направих така в мейн-а:

ISmartphone phone = new Phone(Console.ReadLine().Split(), Console.ReadLine().Split());

и вместо да проверявам с регекс, направих с LINQ
ето ми и ISmartPhonе интерфейса:
 

using System;

public interface ISmartphone
{
    string[] Numbers { get; }
    string[] Sites { get; }
    void Call();
    void Browse();
}

Лично аз имах проблеми при правописа, бях изпуснал удивителния знак. и ми даваше 25/100 (1/2/3 грешен отговор - 4 та минава)

0
24/07/2017 18:55:08
tiapko avatar tiapko 31 Точки

Не е хубаво да даваш get към референтни стойности. Ползвателят на всеки клас, който имплементира този интерфейс ще може да променя стойностите на инициализираните индекси.

0
mad_cop avatar mad_cop 6 Точки

Разбрах проблема

ето и кода от мейн метода

using System;
using System.Linq;

public class StartUp
{
    public static void Main(string[] args)
    {
        var numbers = Console.ReadLine().Split(' ').ToList();
        var sites = Console.ReadLine().Split(' ').ToList();
        var phone = new Smartphone();

        foreach (var number in numbers)
        {
            if (!number.Any(char.IsLetter))
            {
                Console.WriteLine(phone.Call() + number);
            }
            else
            {
                Console.WriteLine("Invalid number!");
            }
        }

        foreach (var site in sites)
        {
            if (!site.Any(char.IsDigit))
            {
                Console.WriteLine(phone.Browse() + site + "!");
            }
            else
            {
                Console.WriteLine("Invalid URL!");
            }
        }
    }
}

0
tiapko avatar tiapko 31 Точки

Друго решение.
https://pastebin.com/0GeYN49E

0