60 / 110
Dec 2017

i po raz kolejny muszę pisać:

  1. nie zakładamy nowego wątku, gdy już istnieje wątek poświęcony temu zadania - to zadanie ma wiele wątków, dzięki niefrasobliwości takich jak ty
  2. jeżeli jest wątek, czytamy - z dużym prawdopodobieństwem problem został dawno temu omówiony
  3. wskazane jest przekazywanie kodu poprze ideone.com5 lub przynajmniej poprawnie go wklejając - tu zginęło formatowanie oraz fragmenty kodu - dzięki czemu stał się całkowicie nieczytelny

i dodatkowo - piszesz w niewłaściwym dziale - problemy związane z rozwiązywaniem zadań powinny być w http://discuss.spoj.com/c/pl-spoj-com/zbior-zadan4

Więc tego powinieneś się najpierw nauczyć i dowiedzieć, zanim zaczniesz wklejać kod i zadawać pytania [w odpowiednim dziale forum]. Dodatkowo, komentarze pod zadaniami są do komentowania a nie do zadawania pytań. Jeżeli nie potrafisz przeczytać 4 pkt krótkich uwag pod zadaniem, zrozumieć ich i się dostosować, to czy nie mam prawa mieć wątpliwości, czy przeczytasz z wystarczającą uwagą i zrozumieniem jakąkolwiek podpowiedź? A podpowiedzi do tego zadania, jak wspomniał już @mariusz193 jest już całe mnóstwo.

1 month later

Piszę tutaj, bo nie znalazłem, żadnego podobnego rozwiązania problemu, który mam :upside_down_face:. A mój problem jest następujący. Zrobiłem sporo testów i szukałem, ale nie znalazłem błędu (od razu nadmieniam, że nie pisze tutaj od razu po tym jak nie zadziałało, czytaj: wysilałem się, nie czekam na gotowe). Program na moje oko działa dobrze, zgodnie z warunkami zadania, ale “sędzia” wyrzuca cały czas Błędną Odpowiedź. Co tu może być nie tak? [Kod w Cpp]

No popatrz, a ja wkleiłem przykład spod zadania i “nie działa”: https://ideone.com/tUCbzm9 :slight_smile: gdzie jest wynik 4 testu?

cin.sync() nie uchroni Cię przed czekającym w buforze znakiem końca lini. To już lepiej cin.get() po prostu tam wstawić i powinno być lepiej.

No jak to gdzie ? U mnie działa, wstawiłem cin.get() zamiast sin.sync() i tak samo “błędna odpowiedź” :confused:
Przechwytywanie
Przechwytywanie

Zadania zawsze testuj na ideone (lub używaj dokładnie tego samego kompilatora). Sędzia sprawdza Twój kod automatycznie generując wyjście i prównując je z wyjściem autora.

Jeśli nikt Ci nie pomoże sprawdzę później gdzie jest błąd. Możesz sprawdzić czy popdowiedź Mariusza rozwiązuje Twój problem: 506. Flamaster [FLAMASTE]

To jest inny problem :slight_smile:

sprawdź dla danych, gdzie masz 111*A + 3*B

choć nie mam pewności, czy to jedyny problem :slight_smile:

Hex. Po poprawieniu wyświetlania outputu dostałem tym kodem AC.

Kolega wyswietla (WA):

 OPSS♪◙ABCDEF♪◙ABBC3D4E5FGGHIIJK3L       ♪◙A10B16                    ♪◙

Zamiast (AC):

OPSS♪◙ABCDEF♪◙ABBC3D4E5FGGHIIJK3L♪◙A10B16♪◙

PS:
Nie sprawdzałem testu @mariusz193, ale możliwe, że algorytm lub implementacja nie są do końca poprawne, natomiast danego testu nie ma w zadaniu lub moją poprawką niechcący rozwiązałem jeszcze jakiś problem :wink:

spojrzałem na kod, i zobaczyłem, że dla 111 kolejnych takich samych znaków da błędny wynik, dalej już nie sprawdzałem :slight_smile:

Napisałem cały program C-stringami, problem z przypadkiem A111 rozwiązałem i rozwiązanie przeszło. Ale nadal nie wiem jak rozwiązać problem tych stringów, długość stringa po przerobieniu (tzn. po dodaniu liczby po literze np. A10) jest taka sama jak długość przed przeróbkami, jest jakby uzupełniana(?). @tarpauwatratar jak poprawiłeś ten output ? Bo w debuggerze nie ma żadnych znaków(?), spacji(?), za napisem.


Przechwytywanie1

Moje poprawki: cin.sync -> cin.get oraz:

for (int i=0; i<x; i++)
{
  for(int j = 0; j < napis[i].length(); ++j) 
  {
    if(isalnum(napis[i][j])) 
    {
      cout << napis[i][j];
    }
  }
  cout << endl;
}

Witam, pomoże ktoś? Nie znalazłem wartości, dla których odpowiedź się nie zgadza. Wrzucenie do pliku też nic nie zmienia. Macie jakiś pomysł?

Masz jakiś pomysł jak zrobić, żeby dla więcej niż 1 cyfrowych takich samych liter?
Bo zupełnie nie wiem jak to zrobić :confused:

W przypadku Twojego kodu oczywiście nie - nie pamiętam go po ok 9h od ostatniego czytania, nota bene na szybko. A kilka konstrukcji zdecydowanie utrudnia jego czytanie (np. for(same=2, licznik=i; slowo[licznik+1]==slowo[licznik+2]; same++, licznik++)).

Mam jednak dziwne przeczucie, że nie umiesz operować ASCII, i np. same+48 to tak na prawdę same+‘0’, zaś wyniki dla więcej niż 1-cyfrowych testów to po prostu graficzna reprezentacja kodów ASCII od 58 w górę. Jak zapewne się domyślasz, przyjrzenie się temu zagadnieniu powinno doprowadzić do AC :wink:

Dzięki, spróbuję uprościć ten kod i przyjrzeć się zagadnieniu kodu ASCII :wink:

Dlaczego sędzia nie akceptuje tego kodu?

#include <iostream>
using namespace std;
int a,b,c,z;
string w,g[1];
char s;
int main()
{
    cin>>c;
    string t[c];
    for(int i=0; i<c; i++)
        cin>>t[i];
    for(int i=0; i<c; i++)
    {
        w=t[i];
        s=w[0];
        a=1;
        b=w.length();
        z=0;
        for(int j=1; j<=b; j++)
        {
            if (w[j]==s)
                a++;
            else
            {
                if(a>2)
                {
                    for(int l=z; l<=j-a; l++)
                        cout<<w[l];
                    cout<<a;
                    z=j;
                }
                a=1;
                s=w[j];
            }
        }
        for(int l=z; l<=b; l++)
            cout<<w[l];
        cout<<endl;
    }
}

Bardzo proszę o pomoc.

moja standardowa rada dla tego zadania, już kilkakrotnie powtarzana - poszukaj jej gdzieś powyżej

2 months later

Witam mam problem program dziala dobrze, natomiast nie dostaje AC mogłby ktoś nasunąć podpowiedź? Dzieki z góry i pozdrawiam

Hej,

nie musisz sprawdzać poprawności wejścia takich jak ilość testów albo czy zawiera tylko duże litery, to jest tylko informacja dla Ciebie która może pomóc np. w doborze zmiennych.

Jakkolwiek to co napisałem wcześniej raczej nie ma wpływu na wynik, tak to, że kod rzuca dla jednoliterowych wyrazów:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(String.java:658)
at Ideone.main(Main.java:39)

prawdopodobnie ma.