Strona 2 z 3 PierwszyPierwszy 123 OstatniOstatni
Pokaż wyniki 11 do 20 z 21

Temat: Błędny program - średnia

  1. #11
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    Zmieniłem regex na:
    Kod:
    $tekst =~ /\D(\d+\.\d+)/;
    i prawie działa. Prawie, czyli działa, chyba że... liczba jest całkowita.
    Czyli np. dla:
    Kod:
    4
    Michał Zegarski 5.75
    Arkadiusz Flegma 3.00
    Monika Prawinska 4.85
    Tomasz Patwa 4.24
    wyświetla: 4.46, ale już dla:
    Kod:
    4
    Michał Zegarski 5.75
    Arkadiusz Flegma 3
    Monika Prawinska 4.85
    Tomasz Patwa 4.24
    wyświetla: 3.71.
    Wie ktoś może jak zrobić, żeby zrobić tak, by część regexu niekoniecznie była wczytywana?

  2. #12
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Kod:
    /\D(\d(\.\d+)?)/
    albo
    Kod:
    /(\d(\.\d+)?)$/
    albo calkiem go uproscic
    Kod:
    /\s+(.*?)$/
    ale wtedy zlapie tez wartosci nie-numeryczne... szuka jednego lub wiecej znaku bialego i lapie grupe znakow do konca linii
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #13
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    Dzięki, program działa.
    Chociaż SPOJ i tak nie zalicza (z żadnym z poprzednich regexów), nie wiem czemu, mimo tego, że wynik jest dobry. -.-

    //Ale gdyby ktoś zauważył błąd, to byłbym wdzięczny za podpowiedź.
    Ostatnio edytowane przez kokosoko : 04-30-2009 - 14:50

  4. #14
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    Już wiem, co jest źle.
    Lepiej późno niż wcale. ;-P
    Otóż dobry jest wynik dla ułamka, ale zły dla części całkowitej.
    Np. dla:
    Kod:
    4
    a a 4.5
    a a 4.5
    q p 34.34
    fgw ewre 34.54
    wychodzi:
    Kod:
    4.47
    zamiast:
    Kod:
    19.47
    .

  5. #15
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    W końcu doszedłem, czemu jest zły wynik. Trzeba było zmienić:
    Kod:
    /\D(\d(\.\d+)?)/
    na:
    Kod:
    /\D(\d+(\.\d+)?)/
    albo:
    Kod:
    /(\d(\.\d+)?)$/
    na:
    Kod:
    /(\d+(\.\d+)?)$/
    Już mnie ogarnęła euforia, że nareszcie się udało, a tu SPOJ nadal nie przyjmuje...

    Tak wiec proszę o pomoc albo lepiej o test, w którym wychodzi mi zła odpowiedź, żebym się sam czegoś nauczył.
    // Wszystkie testy, które wymyślam, dają dobry wynik
    // Dodałem na końcu: "exit;", ale nadal nie działa
    // Najmniejsza wskazówka mile widziana
    Ostatnio edytowane przez kokosoko : 05-10-2009 - 15:42

  6. #16
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Hmmm ja bym powiedzial, ze byc moze SPOJ oczekuje konkretnego kodu (napisanego tak jak autor chce) a nie innego, tz dzialajacego rozwiazania :-o

    Ktos moze potwierdzic/zanegowac moja teorie?
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #17
    Avatar GSG-9
    GSG-9 jest offline Shapeshifter
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    Cytat Napisał TQM Zobacz post
    Hmmm ja bym powiedzial, ze byc moze SPOJ oczekuje konkretnego kodu (napisanego tak jak autor chce) a nie innego, tz dzialajacego rozwiazania :-o

    Ktos moze potwierdzic/zanegowac moja teorie?
    kod ma sie miescic w podanych rozmiarach i w wykonywanym czasie, na okreslonej wersji interpretera, ma przyjmowac kod od automatu i printowac go dalej, nie ma roznicy jak bedzie on wygladal
    War, war never changes.

  8. #18
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    to ja proponuje sprawdzic czy to co zwraca pokrywa sie z tym czego oczekuje robot SPOJ
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  9. #19
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    No właśnie testy, które wymyślam dają dobre wyniki, gdyż sprawdzam to na kalkulatorze.
    A nie da się sprawdzić na SPOJu, które testy dają u mnie błędną odpowiedź, gdyż tylko admini mają taką władzę.

  10. #20
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Sprawdz czy format odpowiedzi jaka podaje Twoj program jest taka sama... jesli program oczekuje "Wynik: \n+\.\n+" to upewnij sie, ze Twoj kod podaje taki wlasnie format odpowiedzi. Pamietaj, ze calosc sprawdza robot i on nie rozumie jesli dodasz spacje albo pominiesz dwukropek...
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Podobne wątki

  1. program zdalnie otwierajacy inny program:P
    By northdakota in forum C/C++
    Odpowiedzi: 9
    Autor: 02-27-2009, 23:48
  2. Odpowiedzi: 8
    Autor: 07-26-2008, 09:05
  3. Szkoła średnia
    By lukasz6547 in forum Off Topic
    Odpowiedzi: 1
    Autor: 05-15-2008, 00:07
  4. program
    By Goku1994 in forum Hacking
    Odpowiedzi: 9
    Autor: 08-05-2007, 15:51

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj