1 / 26
Mar 2017

Witam :slight_smile:
Od jakiegoś czasu męczę sie z zadaniem Walidacja adresu e-mail na SPOJ'u. (http://pl.spoj.com/problems/FR_02_08/)
Przeczytałem poprzednie posty na ten temat ale jedyne co znalazłem to ten plik z wejściami i wyjściami ( http://www.algorytm.edu.pl/spoj/walidacja.rar36 ) Plik z wyjściami i moj plik z wyjściami są identyczne (sprawdzane programem) Uznałem, że skoro przerobiłem 100000 wejść i nadal nie działa to czas sie zgłosić po pomoc :smiley:
Oto kod: http://ideone.com/G7RHxx45
Dostaje WA na 11 uruchomieniu.
Z góry dziękuję za pomoc :wink:

  • created

    Mar '17
  • last reply

    Oct '22
  • 25

    replies

  • 1.9k

    views

  • 12

    users

  • 3

    likes

  • 8

    links

OMG dzieki wielkie, przez przypadek wkradł mi sie smieciowy znak w kodzie. Dzieki dzieki dzieki xD

9 months later

Nie jestem w stanie za bardzo sprawdzić czy uwzględniasz wszystkie warunki zadania, jeżeli stosujesz zapis typu:

if (s[i]<char(46) || s[i]==char(47) || (s[i]>char(57) && s[i]<char(64)) || (s[i]>char(90) && s[i]<char(95)) || s[i]==char(96) || s[i]>char(122)) b++; //zmienia wartosc b w przypadku bledu

Dlaczego nie robisz czegoś typu (fragment mojego kodu):

else if((adres[i-1]=='.')||(adres[i-1]=='@')||(adres[i+1]=='@')||(adres[i+1]=='.'))

?

Moj fragment kodu który przekleiłeś sprawdza warunek użycia dozwolonych w adresie e-mail znaków, natomiast fragment
twojego kodu, który podałeś jako przykład występuje w moim rozwiązaniu kawałek dalej i jest to

if (s[i-1]==char(46) || s[i+1]==char(46) || s[i-1]==char(64) || s[i+1]==char(64)) b++;

Tak jak pisałem wklejony przeze mnie kod spełniał 100 tysięcy przypadków testowych więc wydaje mi się że problem nie leży w nie uwzględnieniu warunków tylko gdzieś indziej, a tak biegły nie jestem, żeby odnaleźć gdzie

nie jest ważne, dla ilu przypadków masz dobry wynik - istotny jest ten jeden, dla którego masz zły :slight_smile:

1
.a@b.cd

Rozumiem, że masz na myśli adresy zaczynające się od kropki.
Z treści zadania: “w mailu może być wiele znaków kropki i każda musi znajdować się między dwoma znakami różnymi niż znak (.) i (@)” - nie wiem czy oznacza to, że kropka może czy nie może być pierwszym znakiem.

Sprawdziłem zaproponowany test i mój kod w odpowiedzi na zwraca “Tak”. W celu sprawdzenia czy może jednak masz rację dodałem warunek na adresy zaczynające się od kropki tak żeby wyjścei było “Nie” i zadanie dalej nie przechodzi. więc to zapewne nie tu leży problem.

ten tekst jest całkowicie jednoznaczny - jeżeli kropka jest pierwsza to nie znajduje się pomiędzy dwoma znakami

po “nie” dodałbym słowo “tylko” :slight_smile:

zamiast warunku wykluczającego:

if (s[i]<char(46) || s[i]==char(47) || (s[i]>char(57) && s[i]<char(64)) || (s[i]>char(90) && s[i]<char(95)) || s[i]==char(96) || s[i]>char(122)) b++;

w przyszłości radziłbym używać negacji warunku dopuszczającego, jako dużo czytelniejszego oraz tajemnicze char(46) zastąpić przez ‘.’, inne char() też odpowiednio

na przykład:

if (!(x>='0' && x<='9' || x>=A' && x<='Z') b++;

natomiast test dla “nie tylko”

1
_@_.__

Mariusz bardzo dziękuję za twoje bardzo cenne i naprowadzające mnie na dobrą drogę uwagi. Rzeczywiście przez gapiostwo pominąłem kilka możliwości, które wynikały z samej treści zadania. Przeredagowałem również kod zgodnie z twoimi zaleceniami i rzeczywiście dużo lepiej to wygląda. Jest ok.

4 months later

Cześć, też mam problem z tym zadaniem :frowning:


Pomoże ktoś? walczę cały dzień i ciągle błąd , również przerobiłem te 100 000 przypadków oraz (przynajmniej tak mi się wydaje) przypadki z tego tematu

1
_@_.__

Mój kod (AC) daje “Nie”, Twój- “Tak”.

PS
Monkey to nie ta małpa :wink:

Dlaczego miałby dawać Nie? Ten przykład (według mnie) spełnia warunki zadania więc prawdopodobnie nie ma takiego testu i dlatego Twoje rozwiązanie przeszło.

(Oczywiście jeżeli dobrze zrozumałem treść).

edit:

[trzeci ciąg znaków składający się z 2 lub 3 liter]

chodzi o to?

edit2:

nawet jeżeli to w moim przypadku jeszcze coś trzeba :slight_smile:

11 days later

Witam

Mógłby ktoś rzucić okiem i naprowadzić mnie na błąd?

dziękuję i pozdrawiam

Co do małpy to dzięki haha ale no “AT” jakoś do mnie nie przemawia i spolszczyłem.
Co do testu to nie rozumiem czemu taki test miałby przejść. Treść zadania nie sugeruje aby to była błędna odpowiedź :frowning:

adres e-mail musi mieć format [pierwszy ciąg znaków]@[drugi ciąg znaków].[trzeci ciąg znaków składający się z 2 lub 3 liter] (pierwszy i drugi ciąg znaków musi się składać z n znaków, gdzie n zawiera się w przedziale [1…20].

Z drugiej strony:

W Polsce coraz więcej ludzi mówi “na”. Ja się czuję głupio jak ktoś tego nie rozumie i muszę użyć słowa małpa. Jan Małpa Kowalski PL, brzmi profesionalnie, nie powiem :wink: